我是 Matlab 的新手。有没有办法使用 printmat 打印 2 个单词的标题?

示例结果如下:

 Title One        Title Two         Title Three
        11               22                  33
        22               33                  44

这是我目前尝试修改的代码:
matA = [ 11 22 33; 22 33 44];
printmat(matA, '' , '' , 'TitleOne TitleTwo TitleThree');

我似乎无法在“标题”和“一”之间添加空格,其中添加空格总是会导致以下结果:
printmat(matA, '' , '' , 'Title One Title Two Title Three');

     Title              One               Title
        11               22                  33
        22               33                  44

任何帮助表示赞赏。

最佳答案

根据 Matlabs 帮助, printmat 不会提供您正在寻找的内容。您可以改用 sprintf

a = [ 11 22 33; 22 33 44];
s = {'Title One' 'Title Two' 'Title Three'};
s1 = sprintf('%12s\t%12s\t%12s\t\n', s{:});
s2 = sprintf('%12d\t%12d\t%12d\n', a);

horzcat(s1,s2)

这导致
ans =

   Title One       Title Two     Title Three
          11              22              22
          33              33              44

~编辑~
如果使用 printmat 更可取(例如,因为它更灵活),您可以使用 evalcstrrep 来解决。这里的技巧是在调用 printmat 时用其他符号(例如问号)替换空格,通过 evalc 将输出存储在字符串中,然后使用 strrep 用空格替换问号。作为一个不错的副产品,您将表格作为字符串...
a = [ 11 22 33; 22 33 44];
x = evalc('printmat(matA, '''' , ''a b c'' , ''Title?One Title?Two Title?Three'')');

s = strrep(x, '?', ' ')

这导致
s =


                 Title One    Title Two  Title Three
            a     11.00000     22.00000     33.00000
            b     22.00000     33.00000     44.00000

但是printmat和evalc的结合导致很多撇号...

关于Matlab 打印垫,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15069773/

10-10 22:32