在matlab中打印n * m矩阵

时间:2013-02-22 20:20:15

标签: matlab

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

但在我的情况下,我改变了尺寸...

3 个答案:

答案 0 :(得分:16)

您可以使用非常简单的

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

答案 1 :(得分:3)

您可能还想查看dlmwrite

您可以设置分隔符,精度等。

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

M是你的矩阵。

答案 2 :(得分:0)

要添加到已被@Lumen接受且已经有用的答案

您可以使用'aliases' => array( 'viewhelpermanager' =>'ViewHelperManager' ) 消除多余的制表符,以寻找换行符strrep之前的制表符,并用\t\n代替。

因此

\n

成为:

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