可能重复:
遍历matlab文件夹中的文件
我有几个文件夹,每个文件夹大约有 50 个 csv 文件,我必须读取每个文件并将其放在一个与文件名称相同但没有扩展名 .csv 的变量中。文件是 2x15000 矩阵。任何人都可以帮忙吗?我已经搜索了互联网,但没有任何东西适合我。谢谢!
可能重复:
遍历matlab文件夹中的文件
我有几个文件夹,每个文件夹大约有 50 个 csv 文件,我必须读取每个文件并将其放在一个与文件名称相同但没有扩展名 .csv 的变量中。文件是 2x15000 矩阵。任何人都可以帮忙吗?我已经搜索了互联网,但没有任何东西适合我。谢谢!
这是另一个解决方案:
dd = dir('*.csv');
fileNames = {dd.name};
data = cell(numel(fileNames),2);
data(:,1) = regexprep(fileNames, '.csv','');
for ii = 1:numel(fileNames)
data{ii,2} = dlmread(fileNames{ii});
end
这将输出类似
data =
'test1.csv' [2x15000 double]
'test2.csv' [2x15000 double]
etc.
使用这种方法,真的不需要飞来飞去的无数变量名。在这样的情况下使用单元阵列通常被认为是更好的方法;不计其数的变量名称方法是“未完成”。
我宁愿使用结构而不是变量来读取单个文件:
files=dir('*.csv');
for file = files
varname = regexp(file.name, '^.\w+', 'match');
varname = genvarname(varname{:});
data.(varname) = csvread(file.name);
end
如果你想要动态变量,你最终会使用eval
,这是不推荐且危险的。