我有一个看起来像这样的数组:
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
.
.
我想要的是以相同的格式将此数组原样写入文本文件。我尝试了fprintf
和dlmwrite
,但我能够生成完全相同的格式。我知道这很简单,但我只是在尝试了很多后才会问。
答案 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' );
编辑:
行尾问题:对于文本文件,有几种标记行尾的方法:在Windows上通常需要打印\r\n
,对于Mac和Linux,有时它足以使用\r
,有时使用\n
(我不是100%肯定)。因此,您可能需要对其进行一些实验,以找出最适合您机器的方法。 (感谢@Rody在这里纠正我)
准确度:格式字符串%.5g
中的数字决定了打印数字的准确性。同样,你可以玩它直到你对结果感到满意为止。
答案 1 :(得分: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')
这是一种方式:
fid = fopen('cloud.txt', 'w');
fprintf(fid, '%.4f\t%.4f\n', cloud.');
fclose(fid)
这是更易读的方式:
dlmwrite('cloud.txt', cloud, 'delimiter', '\t', 'precision', 4);