我有几个文件夹,每个文件大约有50个csv文件,我必须读取每个文件并将其放在一个名为与文件相同但没有扩展名.csv的变量中。文件是2x15000矩阵。有人可以帮忙吗?我在互联网上搜索过,但对我来说没什么用。谢谢!
答案 0 :(得分:6)
这是另一种解决方案:
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.
通过这种方法,实际上不需要有大量的变量名称。在这种情况下使用细胞阵列通常被认为是更好的方法; zillion-variable名称方法“未完成”。
答案 1 :(得分:4)
我宁愿使用结构而不是变量来读取单个文件:
files=dir('*.csv');
for file = files
varname = regexp(file.name, '^.\w+', 'match');
varname = genvarname(varname{:});
data.(varname) = csvread(file.name);
end
如果你想要动态变量,你最终会使用eval
,这是不推荐的并且很危险。