【问题标题】:Matlab output - Space padding?Matlab输出 - 空间填充?
【发布时间】:2013-09-03 13:03:28
【问题描述】:

我正在尝试输出一个矩阵:

M = [1 20 3; 22 3 24; 100 150 2];

使用:

for i=1:3
    fprintf('%f\t%f\t%f\n', M(i), M(i+length(M)), M(i+length(M)*2));
end

输出结果如下:

1 20 3
22  3  24
100  150  2

这显然不是很好。我怎样才能得到它,所以整数的前面用空格填充?像这样:

  1   20   3
 22    3  24
100  150   2

有什么想法吗?

谢谢!

【问题讨论】:

  • 我假设您需要 fprint() 来写入文件或其他内容,否则您可以在没有分号的情况下执行 M,并且 Matlab 在命令窗口中很好地对其进行格式化。
  • 不知道是不是你的偏好设置不当,导致命令窗口中没有使用等宽字体。

标签: matlab matrix format output printf


【解决方案1】:

您可以使用string formatting 为每个显示的数字分配特定数量的字符。
例如

 fprintf('% 5d\n', 12) 

以 5 个字符打印 12,用空格填充未使用的 3 个前导字符。

【讨论】:

  • 谢谢,就是这样:)
【解决方案2】:

您可以使用num2str(可以选择使用格式字符串%f)并将其应用于整个矩阵而不是每一行,以便获得正确的填充:

disp(num2str(M));

返回

  1   20    3
 22    3   24
100  150    2

【讨论】:

  • @Shai 如果您同时尝试两者,您会看到 disp 在每行的开头添加空格,而 num2str 没有,这与 OP 预期的答案相匹配。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多