【问题标题】:print n*m matrix in matlab在matlab中打印n * m矩阵
【发布时间】:2013-02-08 13:33:28
【问题描述】:

在 MATLAB 中,我以这种方式打印一个非常大的矩阵:

fid = fopen('c:\\OUTPUT.txt','wt');
fprintf(fid,'%f\t',T');
fclose(fid);

但这是不对的!我想这样打印:(\t 在它们之间,\n 在行尾)

1   2   3
4   5   6
7   8   9
10  11  12

我搜了一下发现如果是3*3就好了:

fprintf(fid,'%f %f %f\n',T');

但在我的情况下,我改变了大小......

【问题讨论】:

  • 您可以将fprintf 命令链接起来,例如for ii=1:N; fprintf(fid,'%f',T(ii)); if(ii~=N) fprintf(fid,'\t') end end fprintf(fid,'\n'); or just save to a mat` 文件。

标签: matlab


【解决方案1】:

添加到@Lumen 已经有帮助和接受的答案中

您可以使用strrep 删除多余的制表符,以查找换行符之前的制表符\t\n 替换为\n

因此,

fprintf([repmat('%f\t', 1, size(A, 2)) '\n'], A');

变成:

fprintf(strrep([repmat('%f\t', 1, size(A, 2)) '\n'],'\t\n','\n'), A');

【讨论】:

    【解决方案2】:

    你可以用很简单的

    fprintf([repmat('%f\t', 1, size(A, 2)) '\n'], A');
    

    不过,您将在每一行的末尾有一个多余的标签 \t

    >> A = magic(5)
    
    A =
    
        17    24     1     8    15
        23     5     7    14    16
         4     6    13    20    22
        10    12    19    21     3
        11    18    25     2     9
    
    >> fprintf([repmat('%f\t', 1, size(A, 2)) '\n'], A')
    17.000000   24.000000   1.000000    8.000000    15.000000   % oh, a tab
    23.000000   5.000000    7.000000    14.000000   16.000000   % oh, a tab 
    4.000000    6.000000    13.000000   20.000000   22.000000   % oh, a tab
    10.000000   12.000000   19.000000   21.000000   3.000000    % oh, a tab
    11.000000   18.000000   25.000000   2.000000    9.000000    % oh, a tab
    

    要将输出打印到文件中,只需使用

    fprintf(fid, [repmat('%f\t', 1, size(A, 2)) '\n'], A')
    

    【讨论】:

    • 我应该在哪里处理 txt 文件?!
    • @bunNyBug 使用fprintf(fid, …)
    • @Lumen - 有什么办法可以消除最后一个空的新行?
    • 这是避免额外标签的替代方法:fprintf(fid, ['%f' repmat('\t%f', 1, size(A, 2)-1) '\n'], A')
    【解决方案3】:

    你可能还想看看dlmwrite

    可以设置分隔符、精度等

    dlmwrite('myfile.txt', M, 'delimiter', '\t', 'precision', 6)
    

    M 是您的矩阵。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-06
      • 1970-01-01
      • 2012-05-18
      • 1970-01-01
      • 2013-03-20
      相关资源
      最近更新 更多