如何在MATLAB中的文本文件中编写多个矩阵?

时间:2019-01-29 19:28:02

标签: matlab printf

我有三个矩阵,它们的大小不同。我需要将它们写在文本文件中。我试着写这些:

fileID = fopen('results.txt','w');
fprintf(fileID,'HEADER\n');
fprintf(fileID,'\nmatrix1 = ');
fprintf(fileID,'%d',m1,'\n');
fprintf(fileID,'\nmatrix2 = ');
fprintf(fileID,'%d',m2,'\n');
fprintf(fileID,'\nresult = ');
fprintf(fileID,'%d',m3,'\n');
fclose(fileID);

结果是:

HEADER

matrix1 = 1111121121111111111132133113132333223333213233222212112411442341243123122112323313342431432334132434333341241424433334334333412414244333343321321212221211211222213213122212112112222132232232222231222222344333342243323232333224333343324223233443243343433343333334432433434333433333233443443434443444443444344343433443434443244224343444344444443341442444434434333413133242131123132234344433432434334433124313312212222124222241243323223113222323323343212434321111433213223121241442414334232433243434434412211241211113211121224333412141433122334444444444444444444492110
matrix2 = 1221314111312212211134432433434333433333211212122212112112224334432434244434444492110
result = 1041111041031091131061021111001071031011021061081001091059792110

但这不是我所需要的。矩阵1的大小为20x28,矩阵2的大小为20x4,矩阵3的大小为1x20。它们应看起来像文本文件中的矩阵。 我还应该在同一文件中写入更多矩阵,因此当我需要在文件中写入某些内容时,不应删除先前的数据。

1 个答案:

答案 0 :(得分:0)

这是一个包装MathWorks现有dlmwrite的函数,该函数以您想要的方式表示文件中的矩阵。包装器对于允许文件中多个变量的不同命名是必需的:

function mwrite(filename, variableName, data, mode)

if nargin < 4, mode = 'w'; end  %  pass mode 'w' to overwrite or 'a' to append

f = fopen(filename, mode);
fprintf(f, '%s = [', variableName);

if numel(data) == size(data, 2)
    fprintf(f, '%s];\n', num2str(data) );
else
    fprintf(f, '\n');
    fclose(f);

    dlmwrite(filename, data, '-append');

    f = fopen(filename, 'a');
    fprintf(f, '];\n\n');
    fclose(f);
end