Запись матрицы в текстовый файл без получения дополнительных значений 0

#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 для получения подробной информации об этих функциях.


Вывод:

вывод