使用matlab中的特定数字列表更改x轴级别

时间:2016-08-08 15:40:39

标签: matlab

我有以下内容:
stringr

这会画出x坐标:str_match("abc_def_ghi_jkl", "(.*)_((?:[^_]*_){0}[^_]*$)")[,2:3] # [1] "abc_def_ghi" "jkl" str_match("abc_def_ghi_jkl", "(.*)_((?:[^_]*_){1}[^_]*$)")[,2:3] # [1] "abc_def" "ghi_jkl" str_match("abc_def_ghi_jkl", "(.*)_((?:[^_]*_){2}[^_]*$)")[,2:3] # [1] "abc" "def_ghi_jkl" 但我希望x坐标标签的p值= p = [2;3; 4; 6; 8;11;16;23;32; 45;64;91;128;181;256;362] up = [4.00;3.66; 3.500; 3.50; 3.37; 3.27; 3.18; 3.13;3.09;3.04; 3.00;2.97;2.94;2.90;2.89;2.87]; down = [1.50; 2.00;2.00;2.16;2.25;2.27;2.37;2.43;2.50;2.55;2.57;2.61;2.64;2.67;2.68;2.70]; fill([p;flipud(p)],[up;flipud(down)],'--b')
请帮忙。

2 个答案:

答案 0 :(得分:0)

您使用的是哪个版本的Matlab?

  

注意:从R2014b开始,您可以使用点表示法来设置属性。如果您使用的是早期版本,请改用set函数,例如set(ax,'YTick',[-1 -0.5 0 0.5 1])

% For R2014a and earlier:
% set(ax,'XTickLabel',{'-3pi','-2pi','-pi','0','pi','2pi','3pi'})
% set(ax,'YTickLabel',{'min = -1','-0.5','0','0.5','max = 1'})

See documentation

我的代码如下:

clear
clc
close all
p = [2;3; 4; 6; 8;11;16;23;32; 45;64;91;128;181;256;362];
up = [4.00;3.66; 3.500; 3.50; 3.37; 3.27; 3.18; 3.13;3.09;3.04; 3.00;2.97;2.94;2.90;2.89;2.87];
down = [1.50; 2.00;2.00;2.16;2.25;2.27;2.37;2.43;2.50;2.55;2.57;2.61;2.64;2.67;2.68;2.70];
fill([p;flipud(p)],[up;flipud(down)],'--b');
labels={'2' '3' '4' '6' '8' '11' '16' '23' '32' '45' '64' '91' '128' '181' '256' '362'};
set(gca,'Xtick',linspace(p(1), p(end), length(labels)),'XTickLabel',labels)

Result

答案 1 :(得分:0)

我认为XTickLabel和XTick的长度必须匹配。

请参阅以下代码示例:

x = 2:64;
y = sin(x/10);

plot(x, y);

XTickLabel = {'2' '3' '4' '6' '8' '11' '16' '23' '32' '45' '64'};

ax = gca;
ax.XTick = linspace(x(1), x(end), length(XTickLabel));
ax.XTickLabel = XTickLabel;

enter image description here

正如 GeekCristiano 所述,

  

以上样本需要Matlab R2014b及以上版本。

对于Matlab R2014b之前的版本,请使用以下示例:

x = 2:64;
y = sin(x/10);

plot(x, y);

XTickLabel = {'2' '3' '4' '6' '8' '11' '16' '23' '32' '45' '64'};

ax = gca;
set(ax, 'XTick', linspace(x(1), x(end), length(XTickLabel)));
set(ax, 'XTickLabel', XTickLabel);