2017-06-16 7 views
1

は私の入力ファイルは次のようになります。私は、すなわち#で始まる行をヘッダを読みたいimportdataはを使用して、MATLABのベクトルにファイルから読む()

# 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); 

EDIT:A = importdata(filename、 '#');これは私の問題を解決した

+2

問題の解決策を追加しないでください。答えとしてそれを入れてください。 Btwそのソリューションは、明らかにあなたがしようとしていた構造体の形でデータをインポートしません。代わりにセルとしてデータをインポートします。 –

答えて

0

私はfgetlコマンドがトリックを行うべきだと信じています。

2つのfgetlコマンド(メタデータ行用と数値データ行用)を持つforループに入れます。

EDIT:例を追加しました

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) 

これは、テキストファイルがデータ上または下に追加の行が含まれていないと仮定しています。

関連する問題