控制原理中的Matlab仿真与函数合集
1 基本模型
1.1 传递函数模型(tf)
1.1.1 tf(num,den)
1.2 状态空间模型(ss)
1.2.1 ss(A,B,C,D)
1.2.2 ssdata(sys)
1.2.3 canon(sys)
1.3 零极点模型(zpk)
1.3.1 pzmap(sys)
1.4 模型间的转换
1.4.1 ss2tf(sys)/tf2ss(sys)
1.4.2 tf2zp(sys)/zp2tf(sys)
2 时域分析法
2.1 时域响应
2.2 根轨迹法
3 频域分析法
3.1 伯德图
3.2 奈奎斯特图
4 状态空间分析法
4.1 求状态转移矩阵
4.2 可控性可观性分析
5 非线性分析
5.1 相平面图
6 常用的工程数学函数
6.1 矩阵运算
6.1.1 矩阵求逆inv(A)
6.1.2 矩阵行列式det(A)
6.1.3 矩阵特征分解eig(A)
6.1.4 矩阵秩rank(A)
6.2 积分变换
6.2.1 拉氏变换与反拉式变换laplace()/ilaplace()
注
1 基本模型
1.1 传递函数模型(tf)
1.1.1 tf(num,den)
num,den分别表示分子、分母多项式。可以用**conv()**耦合两个多项式,例如:conv([1,1,0],[1,2])表示
( s 2 + s ) ( s + 2 ) (s^2+s)(s+2)
(s
2
+s)(s+2)
1.2 状态空间模型(ss)
1.2.1 ss(A,B,C,D)
A,B,C,D分别是状态空间模型的系统矩阵、输入矩阵、输出矩阵和直连矩阵。
A=[1 0;1 1]; B=[1 1]'; %转置 C=[1 1]; D=0; sys = ss(A,B,C,D); %sys即为状态空间表述
1.2.2 ssdata(sys)
从状态空间模型提取状态矩阵
[A,B,C,D]=ssdata(sys) %sys即为状态空间表述
1.2.3 canon(sys)
将状态空间模型标准化。
A=[1 0;1 1]; B=[1 1]'; %转置 C=[1 1]; D=0; sys = ss(A,B,C,D); %sys即为状态空间表述 sys_can = canon(sys) %sys_can即为标准化状态空间模型 %[A_,B_,C_,D_]=ssdata(sys_can)%可以提取新的矩阵
1.3 零极点模型(zpk)
1.3.1 pzmap(sys)
绘制系统的零极点图,零点用o表示,极点用x表示。
1.4 模型间的转换
1.4.1 ss2tf(sys)/tf2ss(sys)
状态空间模型与传递函数模型的相互转换。
1.4.2 tf2zp(sys)/zp2tf(sys)
传递函数模型与零极点模型的相互转换。
2时域分析法
2.1 时域响应
单位阶跃响应
y=step(num,den,t) %时间向量t=[0:step:end]
[y,x,t]=step(num,den) %传递函数模型:时间向量t由系统自动生成
[y,x,t]=step(A,B,C,D,iu) %状态方程模型
上述使用方法去掉等号及等号左边的变量,step()函数可以直接画出阶跃响应曲线
单位冲激响应
y=impulse(num,den,t) %时间向量t=[0:step:end]
[y,x,t]=impulse(num,den) %传递函数模型:时间向量t由系统自动生成
[y,x,t]=impulse(A,B,C,D,iu) %状态方程模型
上述使用方法去掉等号及等号左边的变量,impulse()函数可以直接画出阶跃响应曲线
任意输入响应
lsim(sys_1,u,t)
lsim(sys_2,u,t,x_0)
[y,T,x]=lsim(sys_1,u,t)
[y,T,x]=lsim(sys_2,u,t,x_0)
其中,u 为输入信号,x_0 为初始条件,t 为时间向量,sys_1为时域模型,sys_2 为状态空间模型,y为响应输出,T为仿真时间,x为系统状态变量。
A=[1 0;1 1]; B=[1 1]'; C=[1 1]; D=0; sys = ss(A,B,C,D); x_0 = [1 0]'; t=[0:0.01:2]; u=heaviside(t); [y,T,x]=lsim(sys,u,t,x_0); plot(t,y); %输出响应曲线
2.2 根轨迹法
rlocus(sys)可以画出系统根轨迹
3 频域分析法
3.1 伯德图
bode(num,den) % 绘制bode图
[mag pha] = bode(num,den) %mag、pha是bode图的幅值和相位函数
margin(num,den) %计算连续系统的幅值裕度和相角裕度,并绘制bode图
[gm,pm,wcp,wcg] = margin(num,den) % 计算幅值裕度、相角裕度及对应的穿越频率
3.2 奈奎斯特图
nyquist(num,den) %求连续系统的奈奎斯特曲线
4 状态空间分析法
4.1 求状态转移矩阵
syms s; A=[1 0;1 1]; I=[1 0;0 1]; fai = ilaplace(inv(s*I-A));
4.2 可控性可观性分析
QC = ctrb(A,B); %获得可控性矩阵 QO = obsv(A,C); %获得可观性矩阵 %再求两阵的秩即可判断可控性、可观性 [Ac,Bc,Cc,Tc,Kc]=ctrbf(A,B,C) %可控性分解 %将系统分解为可控子系统和不可控子系统,Tc是变换阵,sum(Kc)是可控状态的数目 [Ao,Bo,Co,To,Ko]=cbsvf(A,B,C) %可观性分解 将系统分解为可观测子系统和不可观测子系统,Tc是变换阵,sum(Ko)是可观测状态的数目
5 非线性分析
5.1 相平面图
[tout,yout] = ode45(function,[t0,tf],y0)
其中yout是解向量,与时间向量tout一一对应;function是函数句柄,内部包含非线性微分方程;t0, tf是初始时间与终止时间;y0是微分方程的初始条件。
e.g. x ¨ + x ˙ + ∣ x ∣ = 0 \ddot{x}+\dot{x}+\left| x \right|=0
x
¨
+
x
˙
+∣x∣=0
diff_eqn.m function sys = diff_eqn(t,x) sys = [x(2);-x(2)-abs(x(1))]; end main.m [t,x] = ode45('diff_eqn',[0,9],[-5,11]); plot(x(:,1),x(:,2));
6 常用的工程数学函数
6.1 矩阵运算
6.1.1 矩阵求逆inv(A)
6.1.2 矩阵行列式det(A)
6.1.3 矩阵特征分解eig(A)
[V,D]=eig(A):求矩阵A的全部特征值,构成对角阵D,并求A的特征向量构成V的列向量
6.1.4 矩阵秩rank(A)
6.2 积分变换
6.2.1 拉氏变换与反拉式变换laplace()/ilaplace()
注
此文档将随着学习过程,不断更新。