0

いくつかの文字列を含み、ほとんどが数値であるテキスト ファイルを読みたいと考えています。文字列を無視して数字だけを見たい。これらの値を 3D 平面にプロットしたいと思います。データは次のようになります。

Tech4:<152.266724,173.189377,27.995975> 
<117.880638,156.116531,27.999983> 
<129.849899,59.195660,27.999983> 
<249.321121,60.605404,27.999983>  
<224.120361,139.072739,28.000668> 
<171.188950,143.490921,56.933430> 
<171.188950,143.490921,83.548088>
<171.188950,143.490921,27.999985> 

ファイルを読み込むのは次のとおりだと思います:

File = textread('testFile.txt');

これらの値だけを見て、それをプロットするにはどうすればよいですか。

ありがとう!

4

2 に答える 2

1
fid = fopen([pathname,filename]);

tline = fgetl(fid);

CX = [];
CY = [];
CZ = [];

while ischar(tline)
    % skip < and >
    tline = substr(tline, 1, length(tline)-2)

    % extract numbers
    temp = textscan(tline,'%n%n%n', 'delimiter',',');

    CX(end+1,:) = [temp(1)];
    CY(end+1,:) = [temp(2)];
    CZ(end+1,:) = [temp(3)];

    tline = fgetl(fid);
end

fclose(fid);

次に、plot3(CX、CY、CZ)を使用してプロットします。

関数呼び出し。

ただし、最初に「Tech4:」のチェックを追加します...

于 2012-05-22T18:46:31.267 に答える
1

ワンライナーでtextscanを直接使用することもできると思います。

fid = fopen('testFile.txt');
data = textscan(fid,'%*s%f,%f,%f');
fclose(フィッド);

これにより、指定された形式のすべての行の値が variable にロードされますdata。ただし、テストするためのmatlabはありません。

fscanfは、textscan と同じ種類のパラメーターのオプションです。

編集:タイプミス、もちろん整数(%d)ではなく浮動小数点数(%f)を検出したい 編集2:

matlabを入手してテストしました。これはサンプル入力に対してここで機能します^^

fid = fopen('testFile.txt');
data = textscan(fid,'%*s%f%f%f','Delimiter',',<>')
fclose(fid);
于 2012-05-22T19:36:15.563 に答える