M=[2 5 6
4 8 9
11 55 4
89 2 47]
S = {[2 5 6],[4 8 9],[11 55 4],[89 2 47]}
如何从矩阵M,我可以在文本文件中使用格式S?
答案 0 :(得分:3)
在这里拍几张照片,无论哪个都适合你!
%// Form the cell array version of the input matrix, M
S = mat2cell(M,ones(1,size(M,1)),size(M,2))
%// Write to text file
output_file = 'results.txt'
dlmwrite(output_file,S,' ');
代码运行 -
>> type results.txt
2 5 6
4 8 9
11 55 4
89 2 47
如果您希望输出与单元阵列版本完全相似,则可以使用基于fprintf
的解决方案 -
%// S used in this code would come from the earlier codes
output_file = 'results.txt'
fid = fopen(output_file, 'w+');
fprintf(fid, '{') %// Write the starting curly bracket
for ii=1:numel(S)-1
fprintf(fid, '[%s],',num2str(S{ii})); %// Write all data except the final cell
end
fprintf(fid, '[%s]',num2str(S{end})); %// Write the data for final cell,
%// as it does not need any comma after it
fprintf(fid, '}') %// Write the ending curly bracket
fclose(fid);
代码运行 -
>> type results.txt
{[2 5 6],[4 8 9],[11 55 4],[89 2 47]}
如果您对square brackets
内的数字之间的不规则间距不太满意,可以直接使用M
来替换使用{{1}的两行的S
与数据 -
循环内部 -
fprintf
循环退出后 -
fprintf(fid, '[%d %d %d]',M(ii,1),M(ii,2),M(ii,3));
代码运行 -
fprintf(fid, '[%d %d %d]',M(end,1),M(end,2),M(end,3));
答案 1 :(得分:2)