我是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)
任何帮助表示赞赏.
根据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的组合导致很多撇号......