《实验一MATLAB系统地传递函数和状态空间表达式地转换.doc》由会员分享,可在线阅读,更多相关《实验一MATLAB系统地传递函数和状态空间表达式地转换.doc(20页珍藏版)》请在课桌文档上搜索。
1、word实验一 MATLAB系统的传递函数和状态空间表达式的转换一、 实验目的1、学习多变量系统状态空间表达式的建立方法;2、通过编程、上机调试,掌握多变量系统状态空间表达式与传递函数之间相互转换的方法;3、掌握相应的MATLAB函数。二、 实验原理 设系统的模型如式1.1所示: x uR yRP (1.1)其中A为nXn维系统矩阵、B为nXm维输入矩阵、C为pXn维输出矩阵,D为直接传递函数。系统的传递函数和状态空间表达式之间的关系如式1.2所示G(s)=num(s)/den(s)=C (SI-A)-1 B+D (1.2)式1.2中,num(s)表示传递函数的分子阵,其维数是pXm,den(
2、s)表示传递函数的按s降幂排列的分母。表示状态空间模型和传递函数的MATLAB函数如下:函数ssstate space的首字母给出了状态空间模型,其一般形式是: sys=ss(A,B,C,D)函数tftransfer function的首字母给出了传递函数,其一般形式是: G=tf(num,den)其中num表示传递函数中分子多项式的系数向量单输入单输出系统,den表示传递函数中分母多项式的系数向量。函数tf2ss给出了传递函数的一个状态空间实现,其一般形式是: A,B,C,D=tf2ss(num,den)函数ss2tf给出了状态空间模型所描述系统的传递函数,其一般形式是: num,den=s
3、s2tf(A,B,C,D,iu)其中对于多输入系统,必须确定iu的值。例如,假如系统有三个输入u1,u2,u3,如此iu必须是1、2、或3,其中1表示u1,2表示u2,3表示u3。该函数的结果是第iu个输入到所有输出的传递函数。 三.实验步骤与结果1、应用MATLAB对如下系统编程,求系统的A、B、C、D阵,然后验证传递函数是一样的。G(s)= s3+4s2+5s+1程序和运行结果:num=0 0 2 1;0 1 5 3;den=1 4 5 1;A,B,C,D=tf2ss(num,den)A = -4 -5 -1 1 0 0 0 1 0B =1 0 0C =0 2 1 1 5 3D =0 0A
4、=-4 -5 -1;1 0 0;0 1 0; A=-4 -5 -1;1 0 0;0 1 0; B=1;0;0; C=0 2 1;1 5 3; D=0;0; num1,den1=ss2tf(A,B,C,D,1)2、给定系统G(s)=,求系统的零极点增益模型和状态空间模型程序和运行结果:num=0 1 4 5;den=1 6 11 6; sys=tf(num,den)Transfer function: s2 + 4 s + 5-s3 + 6 s2 + 11 s + 6 sys1=tf2zp(num,den) A,B,C,D=tf2ss(num,den)A =6 -11 -61 0 00 1 0B
5、 =10 0C =1 4 5D =0实验2 状态空间模型系统仿真与状态方程求解一、 实验目的1、 熟悉线性定常离散与连续系统的状态空间控制模型的输入方法;2、 熟悉系统模型之间的转换功能;3、 利用MATLAB对线性定常系统进展动态分析。二、 实验原理函数step(sys)给出了系统的单位阶跃响应曲线,其中的sys表示贮存在计算机内的状态空间模型,它可以由函数sys=ss(A,B,C,D)得到。函数impulse(sys)给出了系统的单位脉冲响应曲线。函数y,T,x=Isim(sys,u,t,x0)给出了一个状态空间模型对任意输入的响应,x0是初始状态。函数c2d将连续系统状态空间描述转化为离
6、散系统状态空间形式,其一般形式为:G,H=c2d(A,B,T),其中的T是离散化模型的采样周期。函数d2c将离散系统状态空间描述转化为连续系统状态空间描述,其一般形式为:sysc=d2c(sysd,Method),其中的Method默认值为zoh方法,即带零阶保持器的z变换。函数dstep(G,H,C,D)给出了离散系统的单位阶跃响应曲线。三、 实验步骤与结果程序和运行结果:T=1s时T=2s时 A=0 1 0;-2 -3 0;-1 1 -3; B=0;0;1; C=1 1 1; D=1; G1 H1=c2d(A,B,0.5)G1 =0.8452 0.2387 0 -0.4773 0.1292
7、 0H1 = 0 0 dstep(G1,H1,C,D,1) dstep(G1,H1,C,D,1) G2 H2=c2d(A,B,1)G2 =0.6004 0.2325 0 -0.4651 -0.0972 0H2 =000.3167 dstep(G2,H2,C,D,1) G3 H3=c2d(A,B,2)G3 H3=c2d(A,B,2)G3 =0.2524 0.1170 0 -0.2340 -0.0987 0H3 =0 0 0.3325 dstep(G3,H3,C,D,1)程序和运行结果:Z域仿真图形:连续域仿真图形:程序: G=0 1;-0.16 1; H=1;1;C=1 1; D=0;u=1;
8、dstep(G,H,C,D,u)sysd=ss(G,H,C,D,0.05)a = x1 x2 x1 0 1 x2 -0.16 1 b = u1 x1 1 x2 1c = x1 x2 y1 1 1d = u1 y1 0Discrete-time model. sysc=d2c(sysd,zoh)a = x1 x2b = u1c = x1 x2 y1 1 1d = u1 y1 0Continuous-time model. step(sysc);实验3 能控能观判据与稳定性判据一、实验目的1、利用MATLAB分析线性定常与离散系统的可控性与可观性;2、利用MATLAB判断系统的稳定性。二、实验原理
9、给定系统状态空间描述A,B,C,D,函数ctrb(A,B)计算能控性判别矩阵;函数obsv(A,C)计算能观测性判别矩阵;函数P=lyap(A,Q)求解李雅普诺夫方程ATP+PA=-Q,Q为正定对称矩阵;函数D p=chol(P)可用于判断P矩阵是否正定,p=0,矩阵正定,p为其它值,矩阵非正定。三、实验步骤与结果12A=1 0 0 0;2 -3 0 0;1 0 -2 0;4 -1 -2 -4; B=0;0;1;2; C=3 0 1 0; Qc=ctrb(A,B)Qc =0 0 0 0 0 0 0 0 1 -2 4 -8 2 -10 44 -184 rank(Qc)ans =2 rank(ob
10、sv(A,C)ans =2能控性判别矩阵Qc和能观性判别矩阵都不满秩,故系统既不能控,也不能观。3 A=1 0 0 0;2 -3 0 0;1 0 -2 0;4 -1 -2 -4;B=0;0;1;2; C=3 0 1 0; D=0; z,p,k=ss2zp(A,B,C,D,1);Flagz=0; n=length(A); for i=1:nif real(p(i)0Flagz=1;endend disp(系统的零极点模型为);z,p,k系统的零极点模型为p =-4 -3 -2 1 if Flagz=1disp(系统不稳定);else disp(系统是稳定的);end系统不稳定 step(A,B,
11、C,D);时间响应曲线为:实验4 状态反应与状态观测器的设计一、实验目的1、熟悉状态反应矩阵的求法;2、熟悉状态观测器设计方法。二、实验原理MATLAB软件提供了两个函数acker和place来确定极点配置状态反应控制器的增益矩阵K,函数acker是基于求解极点配置问题的艾克曼公式,它只能应用到单输入系统,要配置的闭环极点中可以包括多重极点。函数place用于多输入系统,但配置极点不可以包括多重极点。函数acker和place的一般形式是:K=acker(A,B,P)K=place(A,B,P)其中的P是一个向量,P=,是n个期望的闭环极点。得到了所要求得反应增益矩阵后,可以用命令eig(A-
12、B*K)来检验闭环极点。由状态反应极点配置和观测器设计问题直接的对偶关系,观测器设计是状态反应设计的转置,可以用H=(acker(A,C,V)来确定一般系统的观测器矩阵,用命令eig(estim(sysold,H)来检验极点配置。三、实验步骤与结果 step(A,B,C,D);num=0 0 1; den=1 3 2;A,B,C,D=tf2ss(num,den)A =-3 -2 1 0B =1 0C = 0 1D = 02、配置后系统的时间响应曲线为:A=-3 -2;1 0;B=1;0;C=0 1; D=0; P=-1+sqrt(-1);-1-sqrt(-1); K=acker(A,B,P)K
13、 = -1 0 disp(极点配置后的闭环系统为)极点配置后的闭环系统为 sysnew=ss(A-B*K,B,C,D)a = x1 x2 x1 -2 -2 x2 1 0b = u1 x1 1 x2 0c = x1 x2 y1 0 1d = u1 y1 0Continuous-time model. step(sysnew)所以:K=-1 0A=-3 -2;1 0; B=1;0; C=0 1; D=0; V=-3;-3; sysold=ss(A,B,C,D); p=eig(A)p =-2 -1 Q=obsv(A,C); m=rank(Q);n=length(A); if m=nH=acker(A,C,V)elsedisp(系统不是状态完全可观测)endH =-2 3所以:H=-2 3文档