2

私はこのような配列を持っています:

    cloud =

7.5059   51.4406
7.5057   51.4445
7.5048   51.4484
7.5034   51.4522
7.5014   51.4558
7.4989   51.4593
7.4958   51.4627
7.4923   51.4658
7.4884   51.4686
.
.

私が欲しいのは、この配列をそのままテキストファイルに同じ形式で書き込むことです。両方試してみましfprintfdlmwriteが、まったく同じフォーマットを作成できました。私はそれが簡単なものであることを知っています、しかし私はたくさん試みた後にだけ尋ねています。

4

2 に答える 2

3

文字列のフォーマットを調べましたか?

fid = fopen( 'myFile.txt', 'w' );
for ii=1:size(cloud,1)
    fprintf( fid, '%.5g\t%.5g\r\n', cloud(ii,1), cloud(ii,2) );
end
fclose( fid ); % do not forget to close the file :-)

saveASCIIファイルを使用することを検討しましたか?

save( 'myFile.txt', 'cloud', '-ascii', '-tabs' );

編集:

  1. 行末の問題:テキストファイルの場合、行末をマークする方法はいくつかあります。Windowsの場合、通常は印刷する必要があります\r\n。MacおよびLinuxの場合は、使用するだけで十分な場合\rもあります\n(100%確実ではありません)。 )。したがって、マシンに最適なものを見つけるために、少し実験する必要があるかもしれません。(ここで私を訂正してくれてありがとう@Rody)

  2. 精度:書式設定文字列の数値%.5gによって、印刷される数値の精度が決まります。繰り返しますが、結果に満足するまでそれで遊ぶことができます。

于 2013-01-25T09:58:39.347 に答える
2

ウィンドウズ

これが1つの方法です:

fid = fopen('cloud.txt', 'w');    
fprintf(fid, '%.4f\t%.4f\r\n', cloud.');
fclose(fid)

より読みやすい方法は次のとおりです。

dlmwrite('cloud.txt', cloud, 'delimiter', '\t', 'precision', 4, 'newline', 'pc')

Linux

これが1つの方法です:

fid = fopen('cloud.txt', 'w');    
fprintf(fid, '%.4f\t%.4f\n', cloud.');
fclose(fid)

より読みやすい方法は次のとおりです。

dlmwrite('cloud.txt', cloud, 'delimiter', '\t', 'precision', 4);
于 2013-01-25T10:02:34.153 に答える