MATLAB:循环遍历许多文件并为新文件提供唯一的名称

时间:2014-10-30 19:24:48

标签: matlab csv

我需要matlab来读取类似命名的csv文件的目录,例如/path/to/matrix1.csv/path/to/matrix2.csv等,并输出newmatrix1.csvnewmatrix2.csv等。这是我的代码:

files=dir('all_zrmat/*.csv')
for filenum = 1:length(files)
    csv=csvread(files(filenum).name)
    ROI=[7 8 9 10 28 29 71 72 73 74]
    Whole=files(filenum).name
    rwd_net=ones(10,10)
    rwd_net=rwd_net*3
    for i = 1:10
        rwd_net(i,1:4)=Whole(ROI(i),7:10)
        rwd_net(i,5:6)=Whole(ROI(i),28:29)
        rwd_net(i,7:10)=Whole(ROI(i),71:74)
    end
    outfile=['rwdnet_' files(filenum).name]
    csvwrite('outfile',rwd_net)
end

我尝试了一行一行以确保它有效,这一行......

>> outfile = ['rwdnet_' files(filenum).name]

...给了我这个疯狂的长串。

rwdnet_zr_matrix.csvzr_matrix000T.csvzr_matrix001T.csvzr_matrix003.csv...

这些标签是正确的,但我不确定它是否是它命名输出文件的内容,或者是什么?我对MATLAB很陌生,所以可能还有其他错误。任何帮助将不胜感激!欢呼声。

(我有rwd_net=rwd_net*3只是为了告诉我脚本正在输出值。)

2 个答案:

答案 0 :(得分:0)

csvwrite('outfile', rwd_net);更改为csvwrite(outfile, rwd_net);。删除outfile周围的引文。您希望使用outfile中包含的字符串作为文件名。将outfile放在引号中意味着您将文件命名为outfile,而不是您想要的目标文件名...因此,在循环的每次迭代中,您将覆盖该文件。

答案 1 :(得分:0)

我已经弄清楚了。问题出在第5行,Whole=files(filenum).name,我在下面更正过:

files=dir('all_zrmat/*.csv');
for filenum = 1:length(files)
    csv=csvread(files(filenum).name);
    ROI=[7 8 9 10 28 29 71 72 73 74];
    Whole=csv; % original 116x116 matrix
    rwd_net=ones(10,10);
    rwd_net=rwd_net*3 ; % to make sure all output values are correct 
    for i = 1:10
        rwd_net(i,1:4)=Whole(ROI(i),7:10);
        rwd_net(i,5:6)=Whole(ROI(i),28:29);
        rwd_net(i,7:10)=Whole(ROI(i),71:74);
    end
    outfile=['rwdnet_' files(filenum).name];
    csvwrite(outfile, rwd_net);
end

谢谢!