0

可能重复:
遍历matlab文件夹中的文件

我有几个文件夹,每个文件夹大约有 50 个 csv 文件,我必须读取每个文件并将其放在一个与文件名称相同但没有扩展名 .csv 的变量中。文件是 2x15000 矩阵。任何人都可以帮忙吗?我已经搜索了互联网,但没有任何东西适合我。谢谢!

4

2 回答 2

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.

使用这种方法,真的不需要飞来飞去的无数变量名。在这样的情况下使用单元阵列通常被认为是更好的方法;不计其数的变量名称方法是“未完成”。

于 2012-12-06T13:10:34.147 回答
4

我宁愿使用结构而不是变量来读取单个文件:

files=dir('*.csv');
for file = files
    varname = regexp(file.name, '^.\w+', 'match');
    varname = genvarname(varname{:});
    data.(varname) = csvread(file.name);
end

如果你想要动态变量,你最终会使用eval,这是不推荐且危险的。

于 2012-12-06T13:12:25.597 回答