【发布时间】:2015-11-02 16:49:12
【问题描述】:
我想知道,是否可以打印一个字符串后跟一个矩阵,以经典形式编写,例如:
5 5 9
>>your matrix is M = 1 4 2
2 1 3
使用fprintf/sprintf。
【问题讨论】:
标签: matlab matrix vector printing printf
我想知道,是否可以打印一个字符串后跟一个矩阵,以经典形式编写,例如:
5 5 9
>>your matrix is M = 1 4 2
2 1 3
使用fprintf/sprintf。
【问题讨论】:
标签: matlab matrix vector printing printf
如果您的矩阵不必与文本在同一行,您可以做一些简单的事情,例如在mat2str 的输出中将; 替换为\n:
A=[1 2 3; 4 5 6; 7 8 9];
intro_str = 'Your matrix is:\n';
sprintf([intro_str strrep(mat2str(A),';','\n ')])
Your matrix is:
[1 2 3
4 5 6
7 8 9]
但是,如果您想将它们放在同一行,那么我了解如何做到这一点的唯一方法是计算每个“非介绍”上所需的制表符 (\t) 或空格的数量行,大概是这样的:
A=[1 2 3; 4 5 6; 7 8 9];
intro_str = 'Your matrix is: ';
%// ntabs = ceil(length(intro_str)/3);
%// tab_blanks = cellstr(repmat('\t',size(A,2),ntabs));
spaces = blanks(length(intro_str));
space_blanks = repmat(spaces,size(A,2),1);
mid_row = ceil(size(A,1)/2);
%// tab_blanks(mid_row) = {intro_str};
space_blanks(mid_row,:) = intro_str;
final_str = [space_blanks repmat('%u\t',size(A,1),size(A,2)) repmat('\n',size(A,1),1)]';
final_str = horzcat(final_str(:))';
sprintf(final_str,A(:))
ans =
1 4 7
Your matrix is: 2 5 8
3 6 9
【讨论】: