1、实验八 线性系统的状态空间分析8.1 用MATLAB分析状态空间模型1、状态空间模型的输入线性定常系统状态空间模型将各系数矩阵按常规矩阵形式描述。在MATLAB里,用函数SS()来建立状态空间模型例8.1 已知某系统微分方程求该系统的状态空间模型。解:将上述微分方程写成状态空间形式, ,调用MATLAB函数SS(),执行如下程序% MATLAB Program example 6.1.mA=0 1;-7 -3;B=0;1;C=5 0;D=0;sys=ss(A,B,C,D)运行后得到如下结果a = x1 x2 x1 0 1 x2 -7 -3 b = u1 x1 0 x2 1 c = x1 x2
2、y1 5 0 d = u1 y1 0 Continuous-time model.2、状态空间模型与传递函数模型转换状态空间模型用sys表示,传递函数模型用G表示。G=tf(sys)sys=ss(G)状态空间表达式向传递函数形式的转换 G=tf(sys)Or num,den=ss2tf(A,B,C,D) 多项式模型参数num,den=ss2tf(A,B,C,D,iu)z,p,k=ss2zp(A,B,C,D,iu) 零、极点模型参数iu用于指定变换所需的输入量,iu默认为单输入情况。传递函数向状态空间表达式形式的转换 sys=ss(G)or A,B,C,D=tf2ss(num,den) A,B,
3、C,D=zp2ss(z,p,k)例 8.2 试用矩阵组a,b,c,d表示系统,并求出传递函数。% MATLAB Program example 6.2.ma=-0.56 0.05;-0.25 0;b=0.03 1.14;0.11 0;c=1 0;0 1;d=zeros(2,2);sys=ss(a,b,c,d)G1=tf(sys)G2=zpk(sys)运行后得到如下结果a = x1 x2 x1 -0.56 0.05 x2 -0.25 0 b = u1 u2 x1 0.03 1.14 x2 0.11 0 c = x1 x2 y1 1 0 y2 0 1 d = u1 u2 y1 0 0 y2 0 0
4、 Continuous-time model. Transfer function from input 1 to output. 0.03 s + 0.0055 #1: - s2 + 0.56 s + 0.0125 0.11 s + 0.0541 #2: - s2 + 0.56 s + 0.0125 Transfer function from input 2 to output. 1.14 s #1: - s2 + 0.56 s + 0.0125 -0.285 #2: - s2 + 0.56 s + 0.0125 Zero/pole/gain from input 1 to output.
5、 0.03 (s+0.1833) #1: - (s+0.5367) (s+0.02329) 0.11 (s+0.4918) #2: - (s+0.5367) (s+0.02329) Zero/pole/gain from input 2 to output. 1.14 s #1: - (s+0.5367) (s+0.02329) -0.285 #2: - (s+0.5367) (s+0.02329)例8.3 考虑下面给定的单变量系统传递函数由下面的MATLAB语句直接获得状态空间模型。 num=1 7 24 24; den=1 10 35 50 24; G=tf(num,den); sys=s
6、s(G)运行后得到如下结果:a = x1 x2 x3 x4 x1 -10 -4.375 -3.125 -1.5 x2 8 0 0 0 x3 0 2 0 0 x4 0 0 1 0 b = u1 x1 2 x2 0 x3 0 x4 0 c = x1 x2 x3 x4 y1 0.5 0.4375 0.75 0.75 d = u1 y1 0 Continuous-time model.3. 线性系统的非奇异变换与标准型状态空间表达式syst=ss2ss(sys,T)sys, syst分别为变换前、后系统的状态空间模型,T为非奇异变换阵。At,Bt,Ct,Dt=ss2ss(A,B,C,D,T)(A,B,
7、C,D)、(At,Bt,Ct,Dt)分别为变换前、后系统的状态空间模型的系数矩阵。8.2 利用MATLAB求解系统的状态方程线性定常连续系统状态方程,状态响应, 式中状态转移矩阵,则有, 1 用MATLAB中expm(A)函数计算状态转移矩阵例8.4 ,求当时,状态转移矩阵即; A=0 -2;1 -3; dt=0.2; phi=expm(A*dt)得到如下结果phi = 0.9671 -0.2968 0.1484 0.5219计算时系统的状态响应2 用step(),impulse() 求阶跃输入,脉冲输入响应例8.5 连续二阶系统求系统的单位阶跃响应% MATLAB Program of ex
8、ample 4.5.mA=-0.7524 -0.7268;0.7268 0;B=1 -1;0 2;C=2.8776 8.9463;D=0;step(A,B,C,D);figure(1)grid on;title(单位阶跃响应)xlabel(时间)ylabel(振幅)运行结果3 用initial()函数,求系统的零输入响应y,t,x=initial(sys,x0)6.5例中,当输入时,状态初值A=-0.7524 -0.7268;0.7268 0;B=1 -1;0 2;C=2.8776 8.9463;D=0;t=0:0.01:15;u=0;sys=ss(A,B,C,D);x0=0.2 0.2;y,
9、t,x=initial(sys,x0,t)plot(t,x)运行结果8.3 系统的可控性与可观性分析1. 线性定常系统的可控性分析可控性矩阵,系统完全可控 。在MATLAB中,可用函数求可控性矩阵例 8.6 , 判断系统的可控性。MATLAB program of example 6.6.mA=1 2 0;1 1 0;0 0 1;B=0 1;1 0;1 1;n=3;CAM=ctrb(A,B);rcam=rank(CAM);if rcam=n disp(system is controlled)elseif rcamn disp(system is not controlled)end执行结果s
10、ystem is controlled例 8.7 将该系统状态方程转换为可控标准型。变换矩阵MATLAB Program of example 6.7.mA=-2 2 -2;0 -1 0;2 -6 1;b=0;1;2;s=ctrb(A,b);if det(s)=0 s1=inv(s);endP=s1(3,:);s1(3,:)*A;s1(3,:)*A*A;PT=inv(P);A1=P*A*PT%(Ac=PAP)b1=P*b%(bc=P*b)运行结果A1 = 0.0000 1.0000 -0.0000 -0.0000 0 1.0000 -2.0000 -3.0000 -2.0000b1 = 0 0
11、1.0000这样可得可控标准型矩阵2. 线性定常系统的可观性分析可观性矩阵系统可观 在MATLAB中,可用函数确定可观性矩阵。例8.8 , 确定可观性。% MATLAB Program of example4.8.mA=-2 3;3 -2;B=1 1;1 1;C=2 1;1 -2;D=0;n=2;ob=obsv(A,C);roam=rank(ob);if roam=n disp(system is observable)elseif roam=n disp(system is no observable)end运行结果system is observable8.4 用MATLAB实现极点配置1
12、. 调用place函数进行极点配置k=place(A,B,P)A,B为系统系数矩阵,P为配置极点,k为反馈增益矩阵。例8.9 给定状态方程 ,将极点配置在,确定反馈增益矩阵k。% MATLAB Program of example 4.9.mA=0 1 0 0;0 0 -1 0;0 0 0 1;0 0 11 0;B=0;1;0;-1;eig(A);P=-1;-2;-1+sqrt(-1);-1-sqrt(-1);k=place(A,B,P)eig(A-B*k)运行结果如下:k = -0.4000 -1.0000 -21.4000 -6.0000ans = -2.0000 -1.0000 - 1.
13、0000i -1.0000 + 1.0000i -1.0000 2. 调用Ackerann公式计算状态反馈矩阵kA=0 1 0 0;0 0 -1 0;0 0 0 1;0 0 11 0;b=0;1;0;-1;eig(A)P=-1;-2;-1+sqrt(-1);-1-sqrt(-1);k = ACKER(A,b,P)eig(A-b*k)运行结果k = -0.4000 -1.0000 -21.4000 -6.00008.5 用MATLAB设计状态观测器例6.10 已知系统状态方程 , (1) 判别可观性;(2) 若系统可观,设计全维状态观测器,使闭环极点为。%example4.10%输入系统状态方程
14、a=0 1 0 0;0 0 -1 0;0 0 0 1;0 0 11 0;b=0;1;0;-1;c=1 0 0 0;n=4;%计算可观性矩阵ob=obsv(a,c);roam=rank(ob);%判断可观性if roam=n disp(system is observable)elseif roam=n disp(system is no observable)end%求解反馈增益矩阵a=0 1 0 0;0 0 -1 0;0 0 0 1;0 0 11 0;b=0;1;0;-1;c=1 0 0 0;p1=-2; -3; -2+sqrt(-1); -2-sqrt(-1)a1=a;b1=c;c1=b;k=acker(a1,b1,p1)%求解系统矩阵h=(k)ahc=a-h*c运行结果system is observableh = 9 42 -148 -492ahc = -9 1 0 0 -42 0 -1 0 148 0 0 1 492 0 11 0 (注:专业文档是经验性极强的领域,无法思考和涵盖全面,素材和资料部分来自网络,供参考。可复制、编制,期待你的好评与关注)