我需要matlab来读取类似命名的csv文件的目录,例如/path/to/matrix1.csv
,/path/to/matrix2.csv
等,并输出newmatrix1.csv
,newmatrix2.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
只是为了告诉我脚本正在输出值。)
答案 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
谢谢!