在MATLAB中重命名文件

时间:2015-06-30 16:13:07

标签: matlab file concatenation renaming

收集数据时,我目前按以下格式命名我的文件:

1_10.mat

下划线之前的数字是一个大陆:

1- Africa
2- South America
3- Central America

第二个数字是该大陆进行测量的那一天。我想要做的是将测量所在的国家/地区添加到文件名的末尾。例如:

1_1 --> 1_10我想将每个重命名为1_1_Zaire --> 1_10_Zaire

1_11 --> 1_14,我想将每个重命名为1_11_Kenya --> 1_11_Kenya

如何在将所有.mat文件保存在同一文件夹中的同时执行此操作?如果可能的话,我更喜欢使用MATLAB进行重命名。

我理解算法将如下所示:

  1. 使用所有.mat文件命名目录
  2. 从绑定1到绑定x
  3. 进行for循环
  4. 连接我想要的短语
  5. 唯一的问题是,我不知道如何获得循环的长度,而且我不了解MATLAB如何读取目录中的文件。

    这是我尝试过的。

    directory = 'C:\place';
    for 1 : 9
        curName = directory.name;
        s = '_Africa';
        laterName = (strcat(directory,s)).name;
    end
    

1 个答案:

答案 0 :(得分:0)

这样的事情应该让你开始:

directory = 'C:\place\';

% Filter the list of files using * as a wildcard.
file = strcat(directory, '*.mat');

% Get a list of files and concatenate them with the directory name.
results = dir(file);

file_name = strcat(directory, '\', num2cell(char(results.name), 2)')';

% The total number of files
nfile = length(file_name)

% Loop through each file.
for i = 1: nfile
    curName = file_name{i}
    d = textscan(curName, '%3s%f%1s%f');
    if (d{2} == 1)
        if (1 <= d{4} && d{4} <= 10)
            laterName = sprintf('.\\%i_%i_Zaire.mat', d{2}, d{4})
        elseif  (11 <= d{4} && d{4} <= 14)
            laterName = sprintf('.\\%i_%i_Kenya.mat', d{2}, d{4})
        end
    else
        % ...
    end
end