自动控制相关的Matlab命令

文章目录

  • 建立控制系统的模型
  • 控制系统的时域分析
  • 控制系统的根轨迹
  • 控制系统的频域分析
  • 一些常见的具体任务所用到的Matlab函数
    • 分析系统的稳定性

建立控制系统的模型

1
2
3
4
5
6
7
8
tf(num,den,…); % 生成传递函数模型;
zpk(z,p,k,…); % 生成零极点增益模型;
ss(a,b,c,d,…); % 生成状态空间模型;
sys=series(SA,SB); % 两个环节级联
sys=parallel(SA,SB); % 两个环节并联
S=feedback(SA,SB); % A环节前向,B环节反馈
[num,den]=ss2tf(A,B,C,D); % 状态空间方程转传递函数
[A,B,C,D]=tf2ss(num,den); % 传递函数转状态空间方程

控制系统的时域分析

1
2
3
4
[u,t]=gensig(‘type’,tau); % 按照指定的类型typetypetype和周期tautautau生成特定类型的激励信号uuu,其中typetypetype可以选择sinsinsin(正弦)、squaresquaresquare(方波)、pulsepulsepulse(脉冲);
impulse(sys);  % 单位脉冲响应
step(sys);  % 单位阶跃响应
lsim(sys,u,T);  % LTI模型的任意输入响应函数,计算线性时不变系统sys在任意输入u持续时间T的作用下的输出y(只返回图形)。

简单的使用方法如下:

1
2
3
4
[u,t]=gensig(‘square’,6,12,0.1);
plot(t,u,’-.’);hold on;
sys=tf([1 1],[1 2 5]);
lsim(sys,u,t)

控制系统的根轨迹

1
2
3
4
5
6
7
8
9
pzmap(sys);  % 绘制系统的零极点图
z=tzero(sys);  % 求系统的传输零点
[K,polesl=rlocfind(sys);  % 计算给定根轨迹增益
[K,poles]=rlocus(sys);  % 求系统根轨迹
[Wn,Z]=damp(sys);  % 求系统极点的固有频率和阻尼系统
P=pole(sys);  % 求系统的极点
k=dcgain(sys);  % 求系统的直流(稳态)增益
s=dsort(p);  % 离散系统极点按幅值降序排列
s=esort(p);  % 连续系统极点按实部降序排列

控制系统的频域分析

1
2
3
4
5
6
7
8
9
10
11
bode(sys);  % Bode图绘制
nichols(sys);  % Nichols图绘制
Nyquist(sys);  % Nyquist图绘制
Sigma(sys);  % 系统奇异值Bode图绘制
fresp=evalfr(sys,x);  % 计算系统单个复频率点的频率响应
dbode(a,b,c,d,Ts,iu);  % 绘制离散系统的Bode图
dnichols(num,den,ts);  % 绘制离散系统的Nichols图
dnyquist(num,den,ts);  % 绘制离散系统的Nyquist图
ngrid;  % Nichols网格图绘制
[gm,pm,wcg,wcp]=margin(sys);  % 绘制离散系统的Bode图
h=freqresp(sys,w);  % 计算系统在给定实频率区间的频率响应

一些常见的具体任务所用到的Matlab函数

分析系统的稳定性

1
2
3
eig(G);  % 求出所有极点 看有没有在右半平面的极点,如果有系统不稳定,反之稳定
isstable(G);  % 稳定返回1,不稳定返回0
pzmap(G);   % 画出零极点图,判断方式同eig