MATLAB 控制系统设计与仿真 - 21
频域分析的MATLAB函数
频域分析法是经典控制领域的一个重要分析与设计工具,是应用频率特性研究线性系统的一种实用方法。一般用开环系统Bode图,Nyquist图,Nichols图以及相应的稳定判据来分析系统的稳定性,动态性能,稳态性能。
Nyquist图
MATLAB提供了nyquist函数用于求连续系统的Nyquist图,函数的调用格式为:
nyquist(sys); % 计算并在当前窗口绘制线性系统sys的Nyquist图
% 当系统为多输入/多输出时,产生一组Nyquist图,每个输入输出对应一个Nyquist图
nyquist(sys,w); % 显示定义绘制时的频率点w。
% 若要定义频率范围,w必须有[wmin wmax]格式,
% 如果定义频率点,则w必须是所需频率点组成的向量
[re im w]=nyquist(sys); % 返回系统的频率响应,re为实部,im为虚部,w为对应的频率点
例-1
连续系统的传递函数为:
绘制对应的Nyquist图:
MATLAB代码如下:
clear all;clc;
s=tf('s');
sys=(s+8)/(s*(s^2+s+4)*(s+1)*(s+3));
nyquist(sys);
ylim([-2 2]);
程序运行结果如下:
Bode图
MATLAB提供了bode函数用于求系统的Bode图,函数的调用格式为:
bode(sys); % 计算并在当前窗口绘制sys的Bode图
bode(sys,w); % 计算并在当前窗口绘制sys的Bode图,w为所需频率点的向量
[mag,phase,w]=bode(sy,w); % 计算Bode图数据并存储在变量中,
% mag为幅值,phase为相位,w为对应的频率点
例-2
对例-1的传递函数绘制Bode图
MATLAB程序如下:
clear all;clc;
s=tf('s');
sys=(s+8)/(s*(s^2+s+4)*(s+1)*(s+3));
w=0:0.1:1000;
bode(sys,w);
grid on
程序运行结果如下:
Nichols图
MATLAB提供了nichols函数求取连续系统的Nichols频率响应曲线,函数的调用格式为:
nichols(sys); % 计算并在当前窗口绘制sys的Nichols图
nichols(sys,w); % 计算频率范围w内的sys的Nichols图
[mag, phase, w]=nichols(sys,win); % 计算并返回sys的Nichols图数据,
% mag为Nichols图幅值,phase为Nichols图相位
例-3
对例-1的传递函数绘制Nichols图
MATLAB程序如下:
clear all;clc;
s=tf('s');
sys=(s+8)/(s*(s^2+s+4)*(s+1)*(s+3));
w=0:0.1:1000;
nichols(sys,w);
grid on
程序运行结果如下:
Nichols图可以很直观的看到闭环系统
的gain margin 和phase margin,所以在控制系统设计中也是一个很好的工具。后面会用具体实例来说明Nichols的稳定性判据。
最后,欢迎大家有问题给我留言。
另外欢迎小伙伴们点赞转发加关注。
谢谢大家!!