0

私はMatlabが新しく、Matlabのテキストファイルからデータ(x、y座標)を読み込み、2D配列に格納しようとしています。私の目標は、次の形式でテキストファイルに目を通すことです。Matlabの文字列から浮動小数点数を読み取る

XPos 4180 
YPos 60 
Orientation 98.69 
AccelX 438.00 
AccelY 161.00 
AccelZ -865.00 
XPos 4079 
YPos -379 

私はラインが「XPOS」が含まれているかどうかを確認することができていますが、私は同じ行や店舗に番号を取得することはできませんよそれは私が初期化した空の配列にあります。私はsscanfとregexを使ってみました。私は正規表現の行をコメントアウトしましたが、うまくいきます。しかし、それは値をセル配列に格納しますが、再び、セル配列から値を取り出し、空の2D配列に格納しようとすると問題に遭遇しました。

dataPoints = zeros(n,n); 
row = 0; 
column = 0; 

file = fopen('file.txt', 'r'); 

while ~feof(file) 
    line = fgets(file); 
    fprintf(line); 

    k = strfind(line, 'XPos'); 

    if(isempty(k)) 

    else 
     fprintf('Found One'); 
     %x = regexp(line, '.*?(\d+(\.\d+)*)', 'tokens'); 
    end 
end 

答えて

2

textscanを使用できます。例えば:

fid = fopen(s); 
C = textscan(fid,'%s %f'); 
fclose(fid); 

array2D = [C{2}(strcmp(C{1},'XPos')),C{2}(strcmp(C{1},'YPos'))] 

しかし、私はあなたが出力として何をしたいのかよく分かりません。

+1

を返し C = sscanfは( 'XPOS 4180'、 'XPOSのは%f')を= {C {2}(strcmp(C {1}、 'XPos'))、C {2}(strcmp(C {1}、 'YPos'))] ' –

+0

ありがとうございます。あなたは素晴らしいです。 –

+0

編集後のJonコメント – beesleep

0

あなたは、ラインでコマンドを文字列XPOSを検出したら、単純なsscanf関数も、作品:おそらく `array2D数4180

関連する問題