如果我有一个工厂让我们说
Gp(s)= 1 /(s + 1)
我可以找到阶段保证金
使用MATLAB命令
Gp = tf([1],[1 1]);
[G P] = margin(Gp);
Run Code Online (Sandbox Code Playgroud)
我的问题是,如果我想知道特定增益过频率的频率相位.如何在不预测情节的情况下找到它?
通常我会通过命令bode(Gp)找到它并将鼠标移动到我想要知道相位裕度的特定增益上.
对于我之前的示例,在-20°相位频率下,增益频率为0.363.
如何将其编写为不查看波德图的命令?
提前致谢
你似乎误解了增益频率和相位裕度实际意味着什么,而且它不是解释它的地方.我认为你真正想要的是一种评估波特图而不点击它的方法.例如,您想知道-20 阶段的幅度和频率.
我们来看看这三种情况:
案例1:您知道频率,并且您正在搜索幅度和相位
最简单的情况:
w = 0.363; % specify given frequency
[mag,phase] = bode(Gp,w) % output of according magnitude and phase
Run Code Online (Sandbox Code Playgroud)
收益:
mag =
0.9400
phase =
-19.9509
Run Code Online (Sandbox Code Playgroud)
案例2:您想知道某个阶段的幅度和频率
p = -20;
[mag,phase,wout] = bode(Gp);
mag_p = interp1( squeeze(phase), squeeze(mag), p)
w_p = interp1( squeeze(phase), wout, p)
Run Code Online (Sandbox Code Playgroud)
收益:
mag_p =
0.9394
w_p =
0.3642
Run Code Online (Sandbox Code Playgroud)
案例3:您想知道一定幅度的相位和频率
m = 0.9394;
[mag,phase,wout] = bode(Gp);
phase_m = interp1( squeeze(mag), squeeze(phase), m)
w_m = interp1( squeeze(mag), wout, m)
Run Code Online (Sandbox Code Playgroud)
收益:
phase_m =
-19.9998
w_m =
0.3642
Run Code Online (Sandbox Code Playgroud)
该squeeze命令是必要的,因为bode输出1x1x...相位和幅度的矩阵.您也可以使用不同的插值方法interp1.