在MATLAB中写入文本文件时进行格式化

时间:2013-01-25 09:52:00

标签: matlab file-io

我有一个看起来像这样的数组:

    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,但我能够生成完全相同的格式。我知道这很简单,但我只是在尝试了很多后才会问。

2 个答案:

答案 0 :(得分:3)

你有没有看过string formatting

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中的数字决定了打印数字的准确性。同样,你可以玩它直到你对结果感到满意为止。

答案 1 :(得分:2)

WINDOWS

这是一种方式:

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