Matlab获取文件夹下所有文件名并将数据按矩阵赋值给变量
一、获取一个文件夹下所有文件名:
fileFolder=fullfile('D:\MATLAB\bin\trc');
dirOutput=dir(fullfile(fileFolder,'*.trc'));
fileNames={dirOutput.name};
解释:
1、第一行
fileFolder=fullfile('D:\MATLAB\bin\trc');
引号内是需要遍历的路径,填绝对路径,然后保存在fileFolder
2、第二行
dirOutput=dir(fullfile(fileFolder,'*.trc'));
引号内是文件的后缀,写'.trc'则读取后缀为'.trc'的文件
3、第三行
fileNames={dirOutput.name};
将所有文件名,以矩阵形式按行排列,保存到fileNames中
二、将数据按矩阵赋值给变量
n = 1;
for i=fileNames
i_trace = strcat('D:\MATLAB\bin\trc\',i);
eval(['T',num2str(n),'=','load(i_trace{1,1})',';']);
n = n+1;
end
1、strcat('D:\MATLAB\bin\trc\',i);获取详细路径,如得到:
i_trace = D:\MATLAB\bin\trc\baiyulin_g9.trc
2、eval(['T',num2str(n),'=','load(i_trace{1,1})',';']);
①eval()是将内容赋值给Tn
②load(i_trace{1,1})是读取文件
③i_trace{1,1}中的{1,1}是读取cell格式的文件,方便load加载,不加{1,1}会报错!!!
3、最终得到
变量名为T1至TN的n个储存着该目录下所有对应文件内容的变量
4、亦可以将变量名命名为你想要的名字
方法使用matlab的正则表达式:
name = regexprep(i,'(_)(g)(\d)+(.)(trc)$','');
这个式子可将字符串为‘baiyulin_g9.trc’的转换为‘baiyulin’。
三、最终形式
fileFolder=fullfile('D:\MATLAB\bin\trc');
dirOutput=dir(fullfile(fileFolder,'*.trc'));
fileNames={dirOutput.name};
n = 1;
for i=fileNames
i_trace = strcat('D:\MATLAB\bin\trc\',i);
eval(['T',num2str(n),'=','load(i_trace{1,1})',';']);
n = n+1;
end