2017-06-16 47 views
1

我輸入文件看起來像這樣:使用IMPORTDATA()

# FILE:app/src/f1.c 
    2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 0 0 0 0 0 7 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 24 32 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 
    # FILE:src/f2.c 
    1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 24 31 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 
    ............... 

我想讀頭,即,與#開頭的行,和下面的載體本標題變成列表。我嘗試使用下面的importdata()。但這隻給我第一個標題和第一個向量。我需要閱讀它直到文件結尾。

filename = 'output.txt'; 
A = importdata(filename); 
disp(A.rowheaders); 
disp(A.data); 

編輯:A = importdata(filename,'#');這解決了我的問題

+2

不要在問題中添加解決方案。把它作爲一個答案。順便說一句,該解決方案不會導入數據的結構,顯然你正在嘗試做的形式。它將數據作爲單元格導入。 –

回答

0

我認爲fgetl命令應該做的伎倆。

我會把它放在一個for循環中,用兩個fgetl命令,一個用於元數據行,另一個用於數字數據行。

編輯:添加例子

fid = fopen('test.txt'); 

celHeaders = {}; 
celData = {}; 
while(~feof(fid)) 
    celHeaders{end+1} = fgetl(fid); 
    celData{end+1} = fgetl(fid); 
end 

fclose(fid); 

disp(celHeaders) 
disp(celData) 

這是假設您的文本文件不包括上面或下面的數據附加線。