Matlab:跳过bodeplot图例中的项目

时间:2016-01-15 14:28:30

标签: matlab matlab-figure

简短的问题:我怎样才能对图中某些波特图进行传说?以下不起作用:

figure;
hold on; 
h1=bodeplot(1/tf('s'));
h2=bodeplot(12/tf('s'));
legend(h1,'1/s');

编辑/背景:我的脚本中有一个循环,它绘制了50个相同颜色(蓝色)的波特图,以显示植物如何偏离。然后我想在图表中绘制一些上部(红色)和下部(绿色)边界以及平均值(黄色)。当然,我想做一个传奇:蓝线:所有植物;红色:上限;绿色:下限;黄色:平均

感谢您的帮助

2 个答案:

答案 0 :(得分:4)

您可以通过

获取轴手柄
h = findobj(gcf,'type','Axes');

然后在你的情况下使用

legend(h(2),'1/s');

注意,findobj以相反的顺序返回对象。

第二个图(阶段)可以通过h(1)获得。

要选择某些行,请使用:

h = flipud(findobj(gcf,'type','axes'));

hl1 = flipud(findobj(h(1),'type','Line'));
hl2 = flipud(findobj(h(2),'type','Line'));

% Example
legend(h(1),hl1(1),'1/s');
legend(h(2),hl2(2),'12/s');

或作为另一个例子

legend(h(1),hl1(1:2),'1/s','12/s');
legend(h(2),hl2(1),'1/s');

答案 1 :(得分:1)

对于此类用途,您也可以使用强大的控制工具箱。

a = ureal('a',6,'PlusMinus',5);% nominal 6 plus minus 5
H = tf(a,[1 0]);% Try to avoid tf('s') as much as you can
bode(gridureal(H,10)); % 10 equidistant samples