如何以编程方式查找波特图中给定相位的幅度和频率?

时间:2014-03-23 09:59:14

标签: matlab

如果我有一个工厂,那就说

  

Gp(s)= 1 /(s + 1)

我可以找到相位保证金

使用MATLAB命令

Gp = tf([1],[1 1]);
[G P] = margin(Gp);

我的问题是如果我想知道特定增益过频率的频率相位。如何在不预测情节的情况下找到它?

通常我会通过命令bode(Gp)找到它并将鼠标移动到我想知道相位边距的特定增益上。

对于我之前的示例,在-20°频率过频率下,增益频率为0.363。

如何将其写为不查看波德图的命令?

提前致谢

1 个答案:

答案 0 :(得分:5)

您似乎误解了增加频率阶段边际实际意味着什么,而且它不是解释它的地方。我认为你真正想要的是一种评估波特图而不点击它的方法。例如。你想知道在阶段幅度频率

让我们来看看这三种情况:


案例1:您知道频率,并且您正在搜索幅度和阶段

最简单的情况:

w = 0.363;                 % specify given frequency
[mag,phase] = bode(Gp,w)   % output of according magnitude and phase

返回:

mag =

    0.9400


phase =

  -19.9509

案例2:您想知道某个阶段的幅度和频率

p = -20;
[mag,phase,wout] = bode(Gp);

mag_p = interp1( squeeze(phase), squeeze(mag), p)
w_p   = interp1( squeeze(phase), wout, p)

返回:

mag_p =

    0.9394

w_p =

    0.3642

案例3 你想知道一定幅度的相位和频率

m = 0.9394;
[mag,phase,wout] = bode(Gp);

phase_m = interp1( squeeze(mag), squeeze(phase), m)
w_m     = interp1( squeeze(mag), wout, m)

返回:

phase_m =

  -19.9998


w_m =

    0.3642

squeeze命令是必要的,因为bode会为相位和幅度输出1x1x...矩阵。您也可以使用interp1的不同插值方法。