9

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

しかし、私の場合はサイズが変わります...

4

3 に答える 3

16

とてもシンプルに使えます

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

\tただし、各行の最後に1つの余分なタブがあります。

>> 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')
于 2013-02-22T20:32:55.800 に答える
4

あなたも見たいかもしれませんdlmwrite

区切り文字、精度などを設定できます。

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

Mマトリックスはどこにありますか。

于 2013-02-22T20:36:52.997 に答える
0

@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');
于 2018-09-11T12:30:46.557 に答える