您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > 实验八MATLAB状态空间分析
1实验八线性系统的状态空间分析§8.1用MATLAB分析状态空间模型1、状态空间模型的输入线性定常系统状态空间模型xAxBuyCxDu将各系数矩阵按常规矩阵形式描述。11121120101;;;nnnnnnnAaaaaaaBbbbCcccDd在MATLAB里,用函数SS()来建立状态空间模型(,,,)sysssABCD例8.1已知某系统微分方程22dd375ddyyyutt求该系统的状态空间模型。解:将上述微分方程写成状态空间形式0173A,01B50C,0D调用MATLAB函数SS(),执行如下程序%MATLABProgramexample6.1.mA=[01;-7-3];B=[0;1];C=[50];D=0;sys=ss(A,B,C,D)运行后得到如下结果a=x1x2x1012x2-7-3b=u1x10x21c=x1x2y150d=u1y10Continuous-timemodel.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,C,D]=zp2ss(z,p,k)例8.211122211220.560.050.031.140.2500.1101001xxuxxuyxyx试用矩阵组[a,b,c,d]表示系统,并求出传递函数。3%MATLABProgramexample6.2.ma=[-0.560.05;-0.250];b=[0.031.14;0.110];c=[10;01];d=zeros(2,2);sys=ss(a,b,c,d)G1=tf(sys)G2=zpk(sys)运行后得到如下结果a=x1x2x1-0.560.05x2-0.250b=u1u2x10.031.14x20.110c=x1x2y110y201d=u1u2y100y200Continuous-timemodel.Transferfunctionfrominput1tooutput...0.03s+0.0055#1:---------------------s^2+0.56s+0.01250.11s+0.0541#2:---------------------s^2+0.56s+0.01254Transferfunctionfrominput2tooutput...1.14s#1:---------------------s^2+0.56s+0.0125-0.285#2:---------------------s^2+0.56s+0.0125Zero/pole/gainfrominput1tooutput...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/gainfrominput2tooutput...1.14s#1:----------------------(s+0.5367)(s+0.02329)-0.285#2:----------------------(s+0.5367)(s+0.02329)例8.3考虑下面给定的单变量系统传递函数3243272424()10355024sssGsssss由下面的MATLAB语句直接获得状态空间模型。num=[172424];den=[110355024];G=tf(num,den);sys=ss(G)运行后得到如下结果:a=x1x2x3x4x1-10-4.375-3.125-1.5x28000x30200x400105b=u1x12x20x30x40c=x1x2x3x4y10.50.43750.750.75d=u1y10Continuous-timemodel.3.线性系统的非奇异变换与标准型状态空间表达式syst=ss2ss(sys,T)sys,syst分别为变换前、后系统的状态空间模型,T为非奇异变换阵。[At,Bt,Ct,Dt]=ss2ss(A,B,C,D,T)(A,B,C,D)、(At,Bt,Ct,Dt)分别为变换前、后系统的状态空间模型的系数矩阵。§8.2利用MATLAB求解系统的状态方程线性定常连续系统状态方程xAxBu,0(0)xx,0t状态响应00()()()()dtxttxtBu,0t式中状态转移矩阵()Atte,则有()0()(0)()dtAtAtxtexeBu,0t1.用MATLAB中expm(A)函数计算状态转移矩阵Ate例8.4022130xxu,1(0)1x,0u①求当0.2t时,状态转移矩阵即0.2Atte;6A=[0-2;1-3];dt=0.2;phi=expm(A*dt)得到如下结果phi=0.9671-0.29680.14840.5219②计算0.2t时系统的状态响应110.2220.2(0)0.96710.29680.6703(0)(0)0.14840.52190.6703Atttxxexxx2.用step(),impulse()求阶跃输入,脉冲输入响应例8.5连续二阶系统111222120.75240.7268110.72680022.87768.9463xxuxxuxyx求系统的单位阶跃响应%MATLABProgramofexample4.5.mA=[-0.7524-0.7268;0.72680];B=[1-1;02];C=[2.87768.9463];D=0;step(A,B,C,D);figure(1)gridon;title('单位阶跃响应')xlabel('时间')ylabel('振幅')运行结果73.用initial()函数,求系统的零输入响应[y,t,x]=initial(sys,x0)6.5例中,当输入0u时,状态初值(0)0.20.2xA=[-0.7524-0.7268;0.72680];B=[1-1;02];C=[2.87768.9463];D=0;t=[0:0.01:15];u=0;sys=ss(A,B,C,D);x0=[0.20.2];[y,t,x]=initial(sys,x0,t)plot(t,x)运行结果8§8.3系统的可控性与可观性分析1.线性定常系统的可控性分析xAxBuyCxDu可控性矩阵21[,,,,]ncuBABABAB,系统完全可控rankcun。在MATLAB中,可用(,)ctrbAB函数求可控性矩阵cuctrb(A,B)例8.6120011101000111xxu,判断系统的可控性。℅MATLABprogramofexample6.6.mA=[120;110;001];B=[01;10;11];n=3;CAM=ctrb(A,B);9rcam=rank(CAM);ifrcam==ndisp('systemiscontrolled')elseifrcamndisp('systemisnotcontrolled')end执行结果systemiscontrolled例8.72220,010,12612xAxbuAb将该系统状态方程转换为可控标准型。变换矩阵111111,[0,,0,1]cnPPAPPuPA℅MATLABProgramofexample6.7.mA=[-22-2;0-10;2-61];b=[0;1;2];s=ctrb(A,b);ifdet(s)~=0s1=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.00001.0000-0.0000-0.000001.0000-2.0000-3.0000-2.0000b1=001.0000这样可得可控标准型矩阵10110100001,02321ccAAbb2.线性定常系统的可观性分析xAxBuyCxDu可观性矩阵01nCCAUCA系统可观0rankUn在MATLAB中,可用函数obsv(A,C)确定可观性矩阵。例8.823112211xxu,2112yx确定可观性。%MATLABProgramofexample4.8.mA=[-23;3-2];B=[11;11];C=[21;1-2];D=0;n=2;ob=obsv(A,C);roam=rank(ob);ifroam==ndisp('systemisobservable')elseifroam~=ndisp('systemisnoobservable')end运行结果systemisobservable§8.4用MATLAB实现极点配置1.调用place函数进行极点配置k=place(A,B,P)A,B为系统系数矩阵,P为配置极点,k为反馈增益矩阵。11例8.9给定状态方程010000010100010001101xxu,1234yx将极点配置在1,2,1sj,确定反馈增益矩阵k。%MATLABProgramofexample4.9.mA=[0100;00-10;0001;00110];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.0000i-1.0000+1.0000i-1.00002.调用Ackerann公式计算状态反馈矩阵kA=[0100;00-10;0001;00110];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.0000§8.5用MATLAB设计状态观测器例6.10已知系统状态方程010000010100010001101xxu,1000yx(1)判别可观性;12(2)若系统可观,设计全维状态观测器,使闭环极点为2,3,2,2jj。%example4.10%输入系统状态方程a=[0100;00-10;0001;00110];b=[0;1;0;-1];c=[1000];n=4;%计算可观性矩阵ob=obsv(a,c);roam=rank(ob);%判断可观性ifroam==ndi
本文标题:实验八MATLAB状态空间分析
链接地址:https://www.777doc.com/doc-4424138 .html