实验八MATLAB状态空间分析知识讲解.docx
- 文档编号:11690755
- 上传时间:2023-03-30
- 格式:DOCX
- 页数:17
- 大小:140.60KB
实验八MATLAB状态空间分析知识讲解.docx
《实验八MATLAB状态空间分析知识讲解.docx》由会员分享,可在线阅读,更多相关《实验八MATLAB状态空间分析知识讲解.docx(17页珍藏版)》请在冰豆网上搜索。
实验八MATLAB状态空间分析知识讲解
实验八MATLAB状态空间分析
实验八线性系统的状态空间分析
§8.1用MATLAB分析状态空间模型
1、状态空间模型的输入
线性定常系统状态空间模型
将各系数矩阵按常规矩阵形式描述。
在MATLAB里,用函数SS()来建立状态空间模型
例8.1已知某系统微分方程
求该系统的状态空间模型。
解:
将上述微分方程写成状态空间形式
,
,
调用MATLAB函数SS(),执行如下程序
%MATLABProgramexample6.1.m
A=[01;-7-3];
B=[0;1];
C=[50];
D=0;
sys=ss(A,B,C,D)
运行后得到如下结果
a=
x1x2
x101
x2-7-3
b=
u1
x10
x21
c=
x1x2
y150
d=
u1
y10
Continuous-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.2
试用矩阵组[a,b,c,d]表示系统,并求出传递函数。
%MATLABProgramexample6.2.m
a=[-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=
x1x2
x1-0.560.05
x2-0.250
b=
u1u2
x10.031.14
x20.110
c=
x1x2
y110
y201
d=
u1u2
y100
y200
Continuous-timemodel.
Transferfunctionfrominput1tooutput...
0.03s+0.0055
#1:
---------------------
s^2+0.56s+0.0125
0.11s+0.0541
#2:
---------------------
s^2+0.56s+0.0125
Transferfunctionfrominput2tooutput...
1.14s
#1:
---------------------
s^2+0.56s+0.0125
-0.285
#2:
---------------------
s^2+0.56s+0.0125
Zero/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考虑下面给定的单变量系统传递函数
由下面的MATLAB语句直接获得状态空间模型。
>>num=[172424];
>>den=[110355024];
>>G=tf(num,den);
>>sys=ss(G)
运行后得到如下结果:
a=
x1x2x3x4
x1-10-4.375-3.125-1.5
x28000
x30200
x40010
b=
u1
x12
x20
x30
x40
c=
x1x2x3x4
y10.50.43750.750.75
d=
u1
y10
Continuous-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求解系统的状态方程
线性定常连续系统状态方程
,
,
状态响应
,
式中状态转移矩阵
,则有
,
1.用MATLAB中expm(A)函数计算状态转移矩阵
例8.4
,
,
①求当
时,状态转移矩阵即
;
>>A=[0-2;1-3];
>>dt=0.2;
>>phi=expm(A*dt)
得到如下结果
phi=
0.9671-0.2968
0.14840.5219
②计算
时系统的状态响应
2.用step(),impulse()求阶跃输入,脉冲输入响应
例8.5连续二阶系统
求系统的单位阶跃响应
%MATLABProgramofexample4.5.m
A=[-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('振幅')
运行结果
3.用initial()函数,求系统的零输入响应
[y,t,x]=initial(sys,x0)
6.5例中,当输入
时,状态初值
A=[-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.3系统的可控性与可观性分析
1.线性定常系统的可控性分析
可控性矩阵
,
系统完全可控
。
在MATLAB中,可用
函数求可控性矩阵
例8.6
,判断系统的可控性。
℅MATLABprogramofexample6.6.m
A=[120;110;001];
B=[01;10;11];
n=3;
CAM=ctrb(A,B);
rcam=rank(CAM);
ifrcam==n
disp('systemiscontrolled')
elseifrcam disp('systemisnotcontrolled') end 执行结果 systemiscontrolled 例8.7 将该系统状态方程转换为可控标准型。 变换矩阵 ℅MATLABProgramofexample6.7.m A=[-22-2;0-10;2-61]; b=[0;1;2]; s=ctrb(A,b); ifdet(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.00001.0000-0.0000 -0.000001.0000 -2.0000-3.0000-2.0000 b1= 0 0 1.0000 这样可得可控标准型矩阵 2.线性定常系统的可观性分析 可观性矩阵 系统可观 在MATLAB中,可用函数 确定可观性矩阵。 例8.8 , 确定可观性。 %MATLABProgramofexample4.8.m A=[-23;3-2]; B=[11;11]; C=[21;1-2]; D=0; n=2; ob=obsv(A,C); roam=rank(ob); ifroam==n disp('systemisobservable') elseifroam~=n disp('systemisnoobservable') end 运行结果 systemisobservable §8.4用MATLAB实现极点配置 1.调用place函数进行极点配置 k=place(A,B,P) A,B为系统系数矩阵,P为配置极点,k为反馈增益矩阵。 例8.9给定状态方程 , 将极点配置在 ,确定反馈增益矩阵k。 %MATLABProgramofexample4.9.m A=[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.0000 ans= -2.0000-1.0000-1.0000i-1.0000+1.0000i-1.0000 2.调用Ackerann公式计算状态反馈矩阵k A=[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已知系统状态方程 , (1)判别可观性; (2)若系统可观,设计全维状态观测器,使闭环极点为 。 %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==n disp('systemisobservable') elseifroam~=n disp('systemisnoobservable') end %求解反馈增益矩阵 a=[0100;00-10;0001;00110]; b=[0;1;0;-1]; c=[1000]; 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 运行结果 systemisobservable h= 9 42 -148 -492 ahc= -9100 -420-10 148001 4920110
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 MATLAB 状态 空间 分析 知识 讲解