2014-10-10 196 views
0

我需要導入一些文本文件作爲矩陣在Matlab中。任何人都可以幫我代碼嗎?這是我的文本文件名稱。導入多個文本文件到Matlab

elist_S06n1.txt 
elist_S06n2.txt 
elist_S06n3.txt 
elist_S06n4.txt 
elist_S07n1.txt 
elist_S07n2.txt 
elist_S07n3.txt 
elist_S07n4.txt 
. 
. 
. 
elist_S27n5.txt 

所以,直到elist_S09n1.txn是怎麼回事1到4,然後通過5

去1預先感謝您。

+1

請出示我們迄今爲止嘗試了什麼。你在構建正確的[loops]時遇到了問題(http://www.mathworks.nl/help/matlab/ref/for.html),[將數字值轉換爲字符串](http://www.mathworks.nl/幫助/ matlab/ref/sprintf.html)爲您的文件名,或[導入數據](http://www.mathworks.nl/help/matlab/data-import-and-export.html)? – MeMyselfAndI 2014-10-11 14:24:29

+0

我只是試圖修改下面的代碼,但因爲文件名,我沒有管理。 numfiles = 95; mydata = cell(1,numfiles); for k = 1:numfiles myfilename = sprintf('file%d.txt',k); mydata {k} = importdata(myfilename); 結束 – Ram 2014-10-12 15:16:51

回答

0

感謝您的更新,所以我們可以看到你到目前爲止嘗試過的。

在我看來,你有困難生成正確的文件名。您可以使用兩個循環,一個是從6到27,另一個是從1到4或5,而不是遍歷您的單元格數組索引。基於這些值,可以輕鬆生成所需的文件名(介意前導零!)。在循環中,您可以跟蹤生成的單元格數組的索引。

順便說,如果我數的文件的數目,我到達總共18 * 5 + 4 * 4 = 106,而不是95。

的代碼:

numfiles = (27-9)*5 + (9-5)*4; 
mydata = cell(1, numfiles); 

idx = 0; % index for mydata 
n = 4; 
for k1 = 6:27 
    if k1 == 10 
     n = 5; % switch to 5 files if k1 reaches 10 
    end 
    for k2 = 1:n 
     idx = idx+1; 
     myfilename = sprintf('elist_S%02dn%d.txt', k1, k2); 
     mydata{idx} = importdata(myfilename); 
    end 
end 
+0

謝謝1月讚賞。 – Ram 2014-10-14 00:11:34