2013-02-18 69 views
0

textread給出:解析問題在MATLAB

v = textread(strPathFilename, '%s', 'delimiter', ' ', 'endofline', '\r\n'); 

我想回到 'V' 欄目從文件cellArray。

但是我卻得到了一列由空間解析的所有東西。

期望:

file: 
1 2 3 4 CR 
5 6 7 8 CR 
9 10 11 12 CR 

v{1}: 
1, 5, 9 

v{2}: 
2, 6, 10 

回答

1

可以使用textscan來實現這一點:

fid = fopen(strPathFilename,'r') 
v = textscan(fid, '%d%d%d%d', 'delimiter', ' ', 'endofline', '\r\n') 
fclose(fid) 

這導致

v = 

    [3x1 int32] [3x1 int32] [3x1 int32] [3x1 int32] 

與每個包含一個列中單元格的。

+0

+1您還可以省略'endofline'設置 – Praetorian 2013-02-18 17:00:58

+0

如果行的元素數量不同,是否有辦法將其定義爲從第一個元素(每行)開始,而不是循環緩衝區? – jdl 2013-02-18 17:05:38

+0

只要'%d'的數量大於一行中的最大列數,代碼就會正常工作,因爲較短的行被視爲缺少值的行。默認情況下,缺省值被替換爲0,除非用「EmptyValue」標誌定義。有關詳細信息,請參閱http://www.mathworks.de/de/help/matlab/ref/textscan.html。 – 2013-02-18 19:07:20

0

如何:

C = textscan(fid,'%f %f %f %f %s','Delimiter','\n'); 

我希望這有助於。