1、八控制系统工具箱系统常用的数学模型有:传递函数模型,状态方程模型,零极点增益模型,部分分式模型;(1 ) 传递函数描述系统在 MATLAB 中可以方便地由分子和分母系数构成的两个向量唯一地确定出来,这两个向量分别用 num 和 den 表示。num=b1,b2,bm,bm+1den=a1,a2,an,an+1调用格式:G=tf(num,den)注意:它们都是按 s 的降幂进行排列的。num=12,24,0,20;den=2 4 6 2 2;G=tf(num,den)num=4*conv(1,2,conv(1,6,6,1,6,6);den=conv(1,0,conv(1,1,conv(1,1,c
2、onv(1,1,1,3,2,5); G=tf(num,den)(1)G.variable=pTransfer function:4 p5 + 56 p4 + 288 p3 + 672 p2 + 720 p + 288-p7 + 6 p6 + 14 p5 + 21 p4 + 24 p3 + 17 p2 + 5 pG.td=0.5Transfer function:4 p5 + 56 p4 + 288 p3 + 672 p2 + 720 p + 288exp(-0.5*p) * -p7 + 6 p6 + 14 p5 + 21 p4 + 24 p3 + 17 p2 + 5 p(2)G=tf(num,
3、den,inputdelay,0.5)Transfer function:4 s5 + 56 s4 + 288 s3 + 672 s2 + 720 s + 288exp(-0.5*s) * - s7 + 6 s6 + 14 s5 + 21 s4 + 24 s3 + 17 s2 + 5 s(3)set(G,variable,s,Td,0.7)get(G)num: 0 0 4 56 288 672 720 288den: 1 6 14 21 24 17 5 0 ioDelay: 0 Variable: s Ts: 0 InputDelay: 0.7 OutputDelay: 0 201)(34sG
4、)5()1)(3ssInputName: OutputName: InputGroup: 1x1 struct OutputGroup: 1x1 struct Name: Notes: UserData: (2)零极点增益模型调用格式 G=zpk(z,p,k);结果是零极点形式的;函数 tf2zp()可以用来求传递函数的零极点和增益:z,p,k = tf2zp(num,den)例 求零极点增益模型 num=1 11 30;den=1 9 45 87 50;z, p,k=tf2zp(num,den);G=zpk(z,p,k)(3)部分分式展开实际就是对 residue 的应用例 将 tf 转化为
5、部分分式的形式num=2 0 9 1;den=1 1 4 4 ;r p k=residue(num,den);num den=residue(r,p,k)num =2.0000 -0.0000 9.0000 1.0000den =1.0000 1.0000 4.0000 4.0000 (4)状态空间描述B 的列数为输入的个数,C 的行数为输出的个数;D 的维数为 C 的行*B 的列数G=ss(A,B,C,D);例 可以看出: A=1 6 9 10;3 12 6 8;4 7 9 11;5 12 13 14; B=4 6; 2 4; 2 2;1 0; C=0 0 2 1;8 0 2 2; D=ze
6、ros(2); G=ss(A,B,C,D)a = x1 x2 x3 x4x1 1 6 9 10x2 3 12 6 8x3 4 7 9 11x4 5 12 13 1450874931)(234sssG4192)(3ssuxyAxyux20810426359748621b = u1 u2x1 4 6x2 2 4x3 2 2x4 1 0c = x1 x2 x3 x4y1 0 0 2 1y2 8 0 2 2d = u1 u2y1 0 0y2 0 0Continuous-time model. G=tf(G) 得到四个传递函数;分别为 11;12;21 ;21(5)模型之间的相互转换 模型转换的函数包括
7、:residue:传递函数模型与部分分式模型互换ss2tf: 状态空间模型转换为传递函数模型ss2zp: 状态空间模型转换为零极点增益模型tf2ss: 传递函数模型转换为状态空间模型tf2zp: 传递函数模型转换为零极点增益模型zp2ss: 零极点增益模型转换为状态空间模型zp2tf: 零极点增益模型转换为传递函数模型也就是 tf ss zpk 之间可以相互转化;举例说明:1. 状态空间模型:( 单输入,单输出)A=0 1;1 -2;B=0;1;C=1 3;D=1;G=ss(A,B,C ,D);num,den=ss2tf(A,B,C,D,1)Z P K=ss2zp(A,B,C,D,1);2.
8、单入三出的模型的传递函数如下:(这里的分子和分母是矩阵) 612)( 615)()(331 232131 ssGssGusynum=0 0 -2;0 -1 -5 ;1 2 0;den= 1 6 11 6;uxy3102A B C D=tf2ss(num,den); g=tf(num,den)? Error using = tf.tf at 239The values of the “num“ and “den“ properties must be rowvectors or cell arrays of row vectors, where each vectoris nonempty an
9、d containing numeric data. Type “ltipropstf“ for more information.也就是 tf 只能对行向量进行转化;可以直接G=ss(A,B,C,D);G=tf(G) 生成多个传递函数3. 系统的零极点增益模型 )5(2)1(36ssGz=-3;p=-1 -2 -5;k=6;g=zpk(z,p,k);num,den=zp2tf(z,p,k);a,b,c,d=zp2ss(z,p,k)4模型的结构A 串联 G=G1*G2;B.并联 G=G1+G1C.反馈 G=feedback(G1,G2,SIGN);5.控制系统工具箱(控制系统的分析稳定性分析,
10、时域分析,频域分析,根轨迹分析)LTI 对象有如下三种:ss 对象;tf 对象;zpk 对象;(1 ) 稳定性判据;判稳及找出是否为最小相角系统例 a=1 2 -1 2;2 6 3 0;4 7 -8 -5;7 2 1 6;b=-1;0 ;0;1;c=-2 5 6 1;d=7;z p k=ss2zp(a,b,c,d);Ii=find(real(p)0) %找出右半平面的极点下标,以列向量给出pzmap(p,z); %汇出系统的零极点图2.num=3 16 41 28 ;den=1 14 110 528 1494 2117 112;z p k=tf2zp(num,den);pzmap(p,z)(2
11、 ) 时域分析求取系统单位阶跃响应:step()求取系统的脉冲响应:impulse() 本身就可以处理多输入,多输出的问题求系统的稳态值 :dcgain(sys)Pole(G) zero(G) 以列向量形式返回极点和零点例 系统的开环传递函数,求单位反馈下的阶跃1032)(24sssGo响应曲线。uxyx7165201784321 1271495281043)( 23456 ssssGnum=20;den=1 2 13 11 10;g=feedback(num,den,-1)step(g)dcgain(g) 不对num=20;den=1 2 13 11 10;g=tf(num,den);G=f
12、eedback(g,1,-1);step(G)dcgain(G)例 impulse()的用法;以上述传递函数;impulse(G)例 2143214321 0056.20.314.5 uxx求 单位阶跃响应和冲激响应 21432121 uxyA=-2.5 -12.2 0 0;1.22 0 0 0;1 -1.14 -3.2 -2.56;0 0 2.56 0;B=4 1;2 0;2 0;0 0;C=0 1 0 3;0 0 0 1;D=0 -2 ;-2 0;num,den=ss2tf(A,B,C,D);G=tf(num,den);Step(G)impulse(G) 不对的是因为:tf 不能描述多输入
13、多输出;正确的:Sys=ssA,B,C,D;Step(sys);Impulse(sys);(3)频域分析:Bode(G)对数频率特性图Nyquist(G) 幅相特性曲线Nichols(G) ngrid 绘制系统的 nichols 曲线和网格线;开环的Margin(G) margin(a,b,c,d)可以计算出连续状态空间系统表示的幅值裕度和相角裕度并绘制相应波特图。SISO 模型;gm,pm,wcg,wcp=margin(g):由幅值 mag(不是以 dB 为单位) 、相角 phase 及角频率 w 矢量计算出系统幅值裕度和相角裕度及相应的相角交界频率 wcg、截止频率wcp,而不直接绘出 Bode 图曲线。Rlocus(G) 开环的