对不起我的愚蠢问题,我是matlab的新手。 我有一个像这样的矩阵数组
num = [
4.2, 3, 5;
3, 12.1, 3.4;
2, 5.22, 4
]
我只想使用中心对齐格式显示它,如下面的示例
但 num 数组中的数字是动态的,有时每行最多包含4个或更多这样的数字
num = [
4.2, 3, 5, 7.899;
3, 12.1, 3.4, 89;
2, 5.22, 4, 9.1
]
我正在尝试使用 num2str()功能,但它不适合我的情况,因为我的数据是动态的(有时它总是有2或3个十进制数字)这里是我的代码:
num2str('%10.1f \t %10.1f \t %10.1f \n', num);
除了使用num2str()之外还有其他功能吗,因为我的数组数据是动态的
答案 0 :(得分:4)
您可以使用strjust
将字符串居中。在这里,我使用sprintf
在循环中构建单个元素,并添加换行符:
num = [
4.2, 3, 5, 7.899;
3, 12.1, 3.4, 89;
2, 5.22, 4, 9.1
];
% Loop over rows (ii) and columns (jj) of num
output = '';
for ii = 1:size(num,1)
for jj = 1:size(num,2)
output = [output, strjust(sprintf('%10.4g',num(ii,jj)),'center')];
end % for jj
output = [output, '\n'];
end % for ii
fprintf(output)
输出:
4.2 3 5 7.899
3 12.1 3.4 89
2 5.22 4 9.1
你可以把它放到例如通过使用sprintf
的最终调用来形成图像:
text(0.5, 0.5, sprintf(output))
请注意,这使用非固定宽度的字体,因此长行可能看起来不是中心对齐的。这可以通过使用
来看出num = [999, 999, 999, 999; 1, 1, 1, 1];
MATLAB版本R2014a。