在MatLab中加强矩阵显示

w3nuxt5m  于 2022-11-15  发布在  Matlab
关注(0)|答案(2)|浏览(213)

我想知道,除了使用format compact之外,是否还有一种方法可以使矩阵的显示更紧凑或更紧凑(可能是预格式化矩阵输出的第三方包?)
下面是在matlab中使用format compact显示的矩阵的示例

从上面的图像可以看出,列之间有大量的空白。无论每行或每列总共打印多少位数字,列之间的空白量都是固定的。
如果对于给定宽度的命令窗口,矩阵的列数多于其在单行中所能表示的列数,则会浪费此空白空间,因为当发生这种情况时,matlab只会将矩阵分解为几个子矩阵,从而使读取它们变得困难:

附录:

format short有一点帮助,因为它只为4个小数保留空间(见下图),但有什么其他东西使它更紧凑(例如,让用户控制每个条目保留多少个字符)?
例如,比较以下内容

0 0 0 0 0 1 0 0 1 0
0 0 1 0 0 0 0 0 0 0 
0 0 0 0 1 0 0 0 0 1

有:

s71maibg

s71maibg1#

默认间距虽然可能可以由really knows what they're doing用户更改,但不能更改。
如果您确实需要控制内容的显示方式,我建议使用fprintf(1,'...')命令。这样你就可以尽可能多地控制它的外观。

7hiiyaii

7hiiyaii2#

如果您确定条目都是0到9之间的整数(即一个字符),则可以使用:

fprintf([repmat('%d ',1,size(A,2)) '\n'],A');

它会产生类似这样的结果
否则,对于一般整数,您可以使用以下命令获得最严格的格式:

fprintf([repmat(sprintf('%% %dd',max(floor(log10(abs(A(:)))))+2+any(A(:)<0)),1,size(A,2)) '\n'],A');

这会产生类似的结果:

-111     -3     -2  31061  -2285      2  -2030     -2     -4     34
    579    -31   1166    325 -24273     22    -13     -2     -1    -40
   -150     -2  14166  39317      2     12   5119      9     -7     14
     -4     56   -937  46085   -286     44 -28914    -76  -1477 -26938
  -6661  11121    -63     -4   -275  -2014   4053   -697 -12308   -273
  -2038  -3171  72640   4887    811    252   -114   2214    176     -2
  19837  75428    -21   2038  36152    -11   3782 -33491  11082  -3628
  47025 -42492  73009   6746  -5865 -14310 -51040  -7891     -1   1652
   -223     -3   -566     -4  26892    -13  47538 -26949     -1  58930
  13166     -5    169  78945      7   4135   -681   1863    -83  -2037

您可以将它们 Package 为函数,甚至可以使用它们重载disp,如OP的注解中所建议的那样。

相关问题