收藏 分销(赏)

实验八MATLAB状态空间分析.doc

上传人:a199****6536 文档编号:3562353 上传时间:2024-07-09 格式:DOC 页数:13 大小:224KB 下载积分:8 金币
下载 相关 举报
实验八MATLAB状态空间分析.doc_第1页
第1页 / 共13页
实验八MATLAB状态空间分析.doc_第2页
第2页 / 共13页


点击查看更多>>
资源描述
实验八 线性系统的状态空间分析 §8.1 用MATLAB分析状态空间模型 1、状态空间模型的输入 线性定常系统状态空间模型 将各系数矩阵按常规矩阵形式描述。 在MATLAB里,用函数SS()来建立状态空间模型 例8.1 已知某系统微分方程 求该系统的状态空间模型。 解:将上述微分方程写成状态空间形式 , , 调用MATLAB函数SS(),执行如下程序 % MATLAB Program example 6.1.m A=[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 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,C,D]=zp2ss(z,p,k) 例 8.2 试用矩阵组[a,b,c,d]表示系统,并求出传递函数。 % MATLAB Program example 6.2.m a=[-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 Continuous-time model. Transfer function from input 1 to output... 0.03 s + 0.0055 #1: --------------------- s^2 + 0.56 s + 0.0125 0.11 s + 0.0541 #2: --------------------- s^2 + 0.56 s + 0.0125 Transfer function from input 2 to output... 1.14 s #1: --------------------- s^2 + 0.56 s + 0.0125 -0.285 #2: --------------------- s^2 + 0.56 s + 0.0125 Zero/pole/gain from input 1 to output... 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=ss(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,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 example 4.5.m A=[-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,t,x]=initial(sys,x0,t) plot(t,x) 运行结果 §8.3 系统的可控性与可观性分析 1. 线性定常系统的可控性分析 可控性矩阵 , 系统完全可控 。 在MATLAB中,可用函数求可控性矩阵 例 8.6 , 判断系统的可控性。 ℅MATLAB program of example 6.6.m A=[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 rcam<n disp('system is not controlled') end 执行结果 system is controlled 例 8.7 将该系统状态方程转换为可控标准型。 变换矩阵 ℅MATLAB Program of example 6.7.m A=[-2 2 -2;0 -1 0;2 -6 1]; b=[0;1;2]; s=ctrb(A,b); if det(s)~=0 s1=inv(s); end P=[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.0000 b1 = 0 0 1.0000 这样可得可控标准型矩阵 2. 线性定常系统的可观性分析 可观性矩阵 系统可观 在MATLAB中,可用函数 确定可观性矩阵。 例8.8 , 确定可观性。 % MATLAB Program of example4.8.m A=[-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 observable §8.4 用MATLAB实现极点配置 1. 调用place函数进行极点配置 k=place(A,B,P) A,B为系统系数矩阵,P为配置极点,k为反馈增益矩阵。 例8.9 给定状态方程 , 将极点配置在,确定反馈增益矩阵k。 % MATLAB Program of example 4.9.m A=[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.0000 ans = -2.0000 -1.0000 - 1.0000i -1.0000 + 1.0000i -1.0000 2. 调用Ackerann公式计算状态反馈矩阵k A=[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.0000 §8.5 用MATLAB设计状态观测器 例6.10 已知系统状态方程 , (1) 判别可观性; (2) 若系统可观,设计全维状态观测器,使闭环极点为。 %example4.10 %输入系统状态方程 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 observable h = 9 42 -148 -492 ahc = -9 1 0 0 -42 0 -1 0 148 0 0 1 492 0 11 0 (注:专业文档是经验性极强的领域,无法思考和涵盖全面,素材和资料部分来自网络,供参考。可复制、编制,期待你的好评与关注)
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服