使用\ n

时间:2016-03-30 09:00:56

标签: matlab printf matlab-figure

我试图使用此代码重新标记数字:

h=findobj(gcf,'Type','Axes','Tag','colorbar');
oldlabels = str2num(get(h,'YTickLabel'));
newlabels = sprintf('%u%%\n',oldlabels*100)

此时命令窗口中的输出看起来像所需的6x3-Char,但它不是。相反,\n被计为通常的字符,结果是24x1-Char。所以当我使用

set(h,'YTickLabel',newlabels);
它显然不会起作用。有什么我可以替换\n以便sprintf将返回所需的数组维度吗?

以下是oldlabel的一个例子:

oldlabels =

    0.1000
    0.2000
    0.3000
    0.4000
    0.5000
    0.6000

编辑:
@matlabgui我使用R2010b,你的解决方案让我这样: Doesn't really look correct

2 个答案:

答案 0 :(得分:3)

An alternative to sprintf is to just iterate over the array:

axes
h = colorbar;
oldlabels = str2double(get(h,'YTickLabel')); %// or str2num
newlabels = arrayfun(@(x)[num2str(x),'%'],oldlabels*100,'uni',0);
set(h,'YTickLabel', newlabels);

答案 1 :(得分:2)

这对我有用(r2015a):

axes
h = colorbar;
oldlabels = str2double(get(h,'YTickLabel'));
newlabels = sprintf('%u%%\n',oldlabels*100);
set(h,'YTickLabel', newlabels);

enter image description here