#matlab #matrix #text-files
#matlab #матрица #текстовые файлы
Вопрос:
Я пытаюсь записать матрицу в текстовый файл. Мне удалось это сделать, но я не хочу включать их 0
в свой текстовый файл.
Моя матрица выглядит так:
5 0 0; 1 2 28; 1 3 60; 1 4 100; 1 5 108; 2 3 48; 2 4 83; 2 5 90; 3 4 41; 3 5 46; 4 5 12
И я бы хотел, чтобы выходные данные в моем текстовом файле выглядели так:
5; 1 2 28; 1 3 60; 1 4 100; 1 5 108; 2 3 48; 2 4 83; 2 5 90; 3 4 41; 3 5 46; 4 5 12
Как я мог это сделать?
Комментарии:
1. Что приходит на ум: преобразуйте каждую строку массива в ячейку, затем удалите все нули, используя
cellfun
, затемsprintf
ячейку и сохраните результат в файл.
Ответ №1:
Код:
%Given matrix is:
matrix= [5 0 0; 1 2 28; 1 3 60; 1 4 100; 1 5 108; 2 3 48; 2 4 83; 2 5 90; ...
3 4 41; 3 5 46; 4 5 12];
%Converting the matrix into a string and doing some adjustements
out=regexprep(mat2str(matrix),';','; ');
out=regexprep([' ',out(2:end-1)],' 0',''); % Now Removing zeros
fid=fopen('MyFile.txt','w '); %Creating a file
%If your path is not set, either set it or give the full path in the above line
% like this, for example: 'D:AssignmentMyFile.txt'
fprintf(fid, out(2:end)); %Writing data to the text file (excluding the added space)
fclose(fid); %Closing the text file
Прочитайте документацию mat2str
, regexprep
, fopen
, fprintf
, и fclose
для получения подробной информации об этих функциях.
Вывод: