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

上传人:b****5 文档编号:6514106 上传时间:2023-01-07 格式:DOCX 页数:17 大小:140.52KB
下载 相关 举报
实验八MATLAB状态空间分析.docx_第1页
第1页 / 共17页
实验八MATLAB状态空间分析.docx_第2页
第2页 / 共17页
实验八MATLAB状态空间分析.docx_第3页
第3页 / 共17页
实验八MATLAB状态空间分析.docx_第4页
第4页 / 共17页
实验八MATLAB状态空间分析.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

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

《实验八MATLAB状态空间分析.docx》由会员分享,可在线阅读,更多相关《实验八MATLAB状态空间分析.docx(17页珍藏版)》请在冰豆网上搜索。

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

实验八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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1