Matlab printmat

Woo*_*ody 4 matlab

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

示例结果如下:

 Title One        Title Two         Title Three
        11               22                  33
        22               33                  44
Run Code Online (Sandbox Code Playgroud)

这是我目前正在尝试修改的代码:

matA = [ 11 22 33; 22 33 44];
printmat(matA, '' , '' , 'TitleOne TitleTwo TitleThree');
Run Code Online (Sandbox Code Playgroud)

我似乎无法在'Title'和'One'之间添加一个空格,其中添加空格总是会产生以下结果:

printmat(matA, '' , '' , 'Title One Title Two Title Three');

     Title              One               Title
        11               22                  33
        22               33                  44
Run Code Online (Sandbox Code Playgroud)

任何帮助表示赞赏.

H.M*_*ter 6

根据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)
Run Code Online (Sandbox Code Playgroud)

这导致了

ans =

   Title One       Title Two     Title Three    
          11              22              22
          33              33              44
Run Code Online (Sandbox Code Playgroud)

〜编辑〜
如果使用printmat是可取的(例如,因为它更灵活)你可以使用evalc和解决strrep.这里的技巧是用调用中的其他符号(例如问号)替换空格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, '?', ' ')
Run Code Online (Sandbox Code Playgroud)

这导致了

s =


                 Title One    Title Two  Title Three
            a     11.00000     22.00000     33.00000
            b     22.00000     33.00000     44.00000
Run Code Online (Sandbox Code Playgroud)

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