Matlab中Bode图的垂直线

时间:2017-03-31 23:43:15

标签: matlab plot graph

我为我的传递函数绘制了波德图,我想知道是否有某种方法可以插入水平线或垂直线来显示增益/相位角或频率的特定值?

我发现使用以下代码我可以在相位角图上绘制一条水平线:

x = linspace(10^-1,10^2,100);

for bleh = 1:length(x)
      y(bleh) = -30.9638;
end

bode(num, den)
hold on
plot(x,y)

但这似乎并不适用于增益图,也不适用于垂直线的有限知识(以及对我有意义的唯一方法)。我试过了:

y1 = get(gca,'ylim');
w1 = 1.2;

bode(num, den)
hold on

plot(x,y,[w1 w1],y1)

但是我只得到了上面代码中的一条水平线。 这有可能吗?

(使用R2017a,如果重要的话。)

1 个答案:

答案 0 :(得分:2)

我不确定我是否理解你的问题,不过,我提出以下建议。

如果图中有多个axes,就像博德图的情况一样,如果要在特定axes(或全部)中添加内容,则必须指定,在调用plot的句柄axes时。

因此,要在博德图中添加行,您首先要确定两个handles中的axes:您可以至少以两种方式执行此操作:

  • 使用findobj函数:ax=findobj(gcf,'type','axes')
  • 将其提取为图Children
  • ax=get(gcf,'children')

获得handles的{​​{1}}后,您可以使用axesXLim来限制要添加的行的范围

在下面的例子中,我使用上面提出的方法在每个图中添加两行。

水平线和垂直线都添加在X轴和Y轴的中间点(可能这一点没有相关含义,但它只是一个例子)。

YLim

enter image description here

希望这有帮助,

Qapla'