2014-10-30 24 views
0

我需要matlab來讀取類似命名的csv文件的目錄,例如/path/to/matrix1.csv/path/to/matrix2.csv等,並輸出newmatrix1.csvnewmatrix2.csv等,這是我的代碼:MATLAB:遍歷許多文件並給出新文件的唯一名稱

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

變化csvwrite('outfile', rwd_net);csvwrite(outfile, rwd_net);。刪除outfile左右的報價。您想要使用包含在outfile中的字符串作爲文件名。將outfile放在引號中表示您將該文件命名爲outfile,而不是您想要的文件名......因此,在循環中的每次迭代中,都會覆蓋該文件。

+0

好點啊,謝謝!但我仍然不確定如何正確定義'outfile',因爲'outfile = ['rwdnet_'files(filenum).name]'沒有按照我的意願去做 – 2014-10-30 19:59:21

+0

@uncommon_currency - 你確定嗎?它看起來像'outfile'正確地創建了字符串。它不應該連接。在循環中創建'outfile'後執行此操作:'disp(outfile);'。你看到了什麼?你看到單個文件名,還是他們在你上面的文章中的行爲中連接? – rayryeng 2014-10-30 20:01:58

+0

它仍然只是將文件名連接成一個長字符串。此外,我得到關於第三行的錯誤:'csv = csvread(files(filenum).name);' – 2014-10-30 21:04:32

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 

謝謝!