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 :-)

您是否考虑过save输入 ascii 文件?

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

视窗

这是一种方法:

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

这是一种方法:

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 回答