Как написать несколько матриц в текстовом файле в MATLAB? - PullRequest
0 голосов
/ 29 января 2019

У меня три матрицы и их размеры разные.Мне нужно написать их в текстовом файле.Я пытался сделать это, написав следующее:

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

Но это не то, что мне нужно.Размер matrix1 - 20x28, размер matrix2 - 20x4, а matrix3 - 1x20.Они должны выглядеть как матрицы в текстовом файле.Я должен также написать гораздо больше матриц в одном и том же файле, поэтому, когда мне нужно что-то записать в файл, предыдущие данные удалять не следует.

1 Ответ

0 голосов
/ 29 января 2019

Вот функция, которая оборачивает существующие 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...