在matlab中读取文件夹中的所有文件

时间:2012-12-06 12:43:53

标签: matlab

  

可能重复:
  Loop through files in a folder in matlab

我有几个文件夹,每个文件大约有50个csv文件,我必须读取每个文件并将其放在一个名为与文件相同但没有扩展名.csv的变量中。文件是2x15000矩阵。有人可以帮忙吗?我在互联网上搜索过,但对我来说没什么用。谢谢!

2 个答案:

答案 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,这是不推荐的并且很危险。