在MATLAB中写入文本文件时的格式设置

在MATLAB中写入文本文件时的格式设置,matlab,file-io,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 . . 我只想将这个数组以相同的格式写入一个文本文件。我尝试了fprintf和dlmwrite但我能够生成完全相同的格式。我知道这很容易,但

我有一个如下所示的数组:

    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
但我能够生成完全相同的格式。我知道这很容易,但我只是在尝试了很多之后才提出这个问题。

你调查过吗

您是否考虑过将其转换为ascii文件

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

  • 行尾问题:对于文本文件,有几种标记行尾的方法:在windows上,通常需要打印
    \r\n
    ,对于Mac和Linux,有时使用
    \r
    就足够了,有时使用
    \n
    (我不是100%确定)。因此,您可能需要对它进行一点试验,以找出什么最适合您的机器。(感谢@Rody在这里纠正我的错误)

  • 精度:格式化字符串
    %.5g
    中的数字决定打印数字的精度。同样,你可以玩它,直到你对结果感到满意

  • 窗户 这里有一个方法:

    fid = fopen('cloud.txt', 'w');    
    fprintf(fid, '%.4f\t%.4f\r\n', cloud.');
    fclose(fid)
    
    fid = fopen('cloud.txt', 'w');    
    fprintf(fid, '%.4f\t%.4f\n', cloud.');
    fclose(fid)
    
    以下是更具可读性的方式:

    dlmwrite('cloud.txt', cloud, 'delimiter', '\t', 'precision', 4, 'newline', 'pc')
    
    dlmwrite('cloud.txt', cloud, 'delimiter', '\t', 'precision', 4);
    
    LINUX 这里有一个方法:

    fid = fopen('cloud.txt', 'w');    
    fprintf(fid, '%.4f\t%.4f\r\n', cloud.');
    fclose(fid)
    
    fid = fopen('cloud.txt', 'w');    
    fprintf(fid, '%.4f\t%.4f\n', cloud.');
    fclose(fid)
    
    以下是更具可读性的方式:

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

    使用
    dlmwrite
    ,您的代码是什么,我想它应该可以工作了。比如'7.4081,51.127.4078,51.1257.4068,51.1297.4053,51.1337.4032,51.137'第一个
    cloud=8.0775 50.9617 8.0773 50.9646 8.0766 50.9675
    '第二个打印第一个第三个下面的第二列-使用dlmwrite给出错误
    错误(第118行)
    不是有效的属性或分隔符。分隔符必须是单个字符。所以我尝试使用单个空格,但它再次水平打印行。@Vikram:让我猜一下:Windows用户?:)等一下,我会做必要的调整。它是这样的-8.833 51.098.832 51.098.832 51.098.831…不知为什么它也截断了我的值。相反*nix使用
    \n
    ,而Windows使用
    \r\n