使用MATLAB遍历文件
最近在使用MATLAB做数据处理时,发现MATLAB在文件上的处理并不像python一样方便,但也还是支持文件操作的,下面的代码参考自mathwork官方文档 https://ww2.mathworks.cn/help/matlab/file-operations.html
直接上代码
在’E:/matlabTest’路径下有testData1 - testData13共计13个文件夹,每个文件夹下都有一个test.mat数据,需要做的是从上述文件夹中load test.mat进行处理后保存到’E:/matlabTest2’路径下。
dir_path = 'E:\matlabTest'; %输入路径
save_dir = 'E:\matlabTest2'; %输出路径
fileFolder=ls(dir_path); %列出路径下所有的文件
for i=3:15 %去掉前两个元素,注意matlab的数组index从1开始
file_path = strcat(dir_path,strtrim(fileFolder(i,:)),'test.mat');
load(file_path);
mkdir(strcat(save_dir,strtrim(fileFolder(i,:)))) %创建新的文件夹
file_name = strcat(save_dir,strtrim(fileFolder(i,:)),'test.mat');
save(file_name,'data','-v7.3'); %保存文件
end
文件结构
在’E/matlabTest’文件夹中一共有13个文件夹,要做的事遍历这些文件夹,同时拿到这13个文件夹中的所有文件。
遍历某个路径下的所有文件
path = 'E:/matlabTest'
files = ls(path)
使用ls命令,会输出以下内容,输出的是一个str类型的数组,并且数组的前两个元素是 . 和 … ,如果进行处理的时候最好检查一下输出数组中是不是所需的内容。
!注意事项!
- 因为MATLAB本身语法的特性,文件数组中的名称长度都是一样的(名称最长文件的长度),如果名称比较短的文件名会在数组中用空格补齐,所以如果需要处理的话就需要去除名称中的空格,使用 strrtim 命令。
- MATLA数组下表是从1开始的,并不是从0。