MATLAB系统模型建立和动态特性分析实验.docx

上传人:b****7 文档编号:10724745 上传时间:2023-02-22 格式:DOCX 页数:21 大小:63.10KB
下载 相关 举报
MATLAB系统模型建立和动态特性分析实验.docx_第1页
第1页 / 共21页
MATLAB系统模型建立和动态特性分析实验.docx_第2页
第2页 / 共21页
MATLAB系统模型建立和动态特性分析实验.docx_第3页
第3页 / 共21页
MATLAB系统模型建立和动态特性分析实验.docx_第4页
第4页 / 共21页
MATLAB系统模型建立和动态特性分析实验.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

MATLAB系统模型建立和动态特性分析实验.docx

《MATLAB系统模型建立和动态特性分析实验.docx》由会员分享,可在线阅读,更多相关《MATLAB系统模型建立和动态特性分析实验.docx(21页珍藏版)》请在冰豆网上搜索。

MATLAB系统模型建立和动态特性分析实验.docx

MATLAB系统模型建立和动态特性分析实验

、实验目的

1.掌握如何使用MALAB进行系统模型的建立;

2•掌握数学建模的一般方法。

、实验仪器

计算机

、实验内容

3.1传递函数的多项式表示

单输入单输出线性连续系统的传递函数有3种表示形式:

多项式形式,零、极点表示形式和时间常数表示形式,后两种都可以看做是多项式乘积的形式,因此我们先看看MATLAB是如何处理多项式的。

1■多项式的向量表示

MATLAB中多项式用向量表示,行向量元素依次为降幕排列的多项式各项系数。

例如:

多项式P(s^s43s32s5,表示为:

P=[1,3,0,2,5]

注意:

尽管s2项系数为0,但输入P时不可缺省0

2•多项式乘法

MATLAB中多项式乘法处理函数调用格式为:

C=conv(A,B)

例如:

给定两个多项式A(s)=s+3和B(s^10s220s3,求C(s)=A(s)B(s),则应先构造多项式A(s)和B(s),然后再调用conv()函数来求C(s)。

>>A=[1,3];B=[10,20,3];

>>C=conv(A,B)

输出结果:

C=

1050639

或直接写成

C=conv([1,3],[10,20,3])

例如:

G(s)=4*conv([1,2],conv([1,3],[1,4]))

3.传递函数的多项式表示

mmJ

bmSbmiS一…bsbo

G(s)nh

ans+anAs+...+as+a0

在MATLAB中直接用矢量组表示传递函数的分子、分母多项式系数,即:

num=[bmbm-i…b];表示传递函数的分子多项式系数den=[cha>i…ao];表示传递函数的分母多项式系数

sys=tf(num,den)tf命令将sys变量表示成传递函数模型。

s!

■1

例1用MATLAB表示传递函数为22的系统。

s23s22s

解:

在MATLAB环境下输入

>>ng=[11];dg=[132];

>>sys=tf(ng,dg)

则执行后得到如下结果:

sys=

s+1

sA2+3s+2

Continuous-timetransferfunction.

3.2零极点增益模型

G(s)=k

(S_Z!

)lS_Z2)...(S_Zm)

心-山)©®)..“®)

在MATLAB中用z、p、k矢量组分别表示系统的零点、极点和增益,即:

z=[Z1Z2zm];

P=[P1P2……pn];k=[k];

sys=zpk(z,p,k)zpk命令将sys变量表示成零极点增益模型

例2用MATLAB表示传递函数为1.5(s*1的系统

s(s1)(s2)

解:

在MATLAB环境下输入

>>z=-1;p=[0-1-2];k=1.5;

>>Gz=zpk(z,p,k)

执行结果为:

Zero/pole/gain:

1.5(s+1)s(s+1)(s+2)

3.3、状态空间模型

x=ax+buy=ex+du

在MATLAB中用(a、b、c、d)矩阵组表示,然后sys=ss(a,b,c,d)ss命令将sys变量表示成状态空间模型

3.4连续系统的模型转换

1.多项式形式转换为零、极点形式

例如:

32

〜、12s+24s+12s+20

G(s)432

2s+4s+6s+2s+2

程序:

>>num=[12241220];

>>den=[2,4,6,2,2];

>>G=tf(num,den);

>>GG=zpk(G)

运行结果:

Zero/pole/gain:

6(s+1.929)(sA2+0.07058s+0.8638)

(sA2+0.08663s+0.413)$八2+1.913s+2.421)

2.零、极点形式转换为多项式形式

10(s1)(s2)

例:

G(s):

s(s+5)(s+10)

>>z=[-1,-2];

>>p=[0,-5,-10];

>>k=10;

>>Gz=zpk(z,p,k);

>>GG=tf(Gz)

运行结果为:

Transferfunction:

10sA2+30s+20sA3+15sA2+50s

3.5传递函数的部分分式展开

当:

传谨函妇心厘

X(s)

num(s)

den(s)

在MATLAB中直接用分子/分母的系数表示时有

num=[bO,bl,…,bm];

den=[aO,a1,…,an];

则命令

[r,p,k]=residue(num,den)

将求出两个多项式丫(s)和X(s)之比的部分分式展开的留数、极点和直接项。

丫(s)/X(s)的部分分式展开由下式给出:

韶•需+筈…珞曲

例3考虑下列传递函数:

坯)

,十百宀11+

命令:

num=[2536];

den=[16116];

[r,p,k]=residue(num,den)

将给出下列结果:

[r,p,k]=residue(num,den)

r=

-6.000

-4.000

3.000

P=

-3.000

-2.000

-1.000

k=

2

留数为列向量r,极点位置为列向量p,直接项是行向量k。

以下是丫(s)/X(s)的部分分式展开的MATLAB表达形式:

YG)_2/+5八+务+呂■一百*一4+3

=(5+1)(5+2)(5+3)一7+35+2十7+T十

命令

Num=[2536];

Den=conv(conv([11],[12]),[13]);

[num,den]=residue(r,p,k)执行后得到如下结果:

[num,den]=residue(r,p,k)

num=

2.00005.00003.00006.0000den=

1.00006.000011.00006.0000

3.1.3模型间的关系与系统建模

实际工作中常常需要由多个简单系统构成复杂系统,MATLAB中有下面几种

命令可以解决两个系统间的连接问题。

1•系统的并联

parallel命令可以实现两个系统的并联。

示意图如下:

 

其中:

num1

G1二

den1

de2

 

g2(s)

2s4

2

s2s3

例4将下面两个系统并联连接

g1(s)=

s+4

>>n1=[3];

>>d1=[14];

>>G仁tf(n1,d1);

>>n2=[24];

>>d2=[123];

>>G2=tf(n2,d2);

>>G=parallel(G1,G2)

运行结果为:

Transferfunction:

5sA2+18s+25

sA3+6sA2+11s+12

2•系统的串联

series命令实现两个系统的串联,示意图如下:

U1

G1(s)-

G1(s)

yu2

G2(s)

10

s1

G2(s)=

>>num仁10;

>>den1=[1,1];

>>G1=tf(num1,den1);

>>num2=[1,1];

>>den2=[1,5];

>>G2=tf(num2,den2);

>>G=series(G1,G2)

执行结果为:

Transferfunction:

10s+10

sA2+6s+5

3.系统的反馈

feedback命令实现两个系统的反馈连接,示意图如下:

sys

G(s)

1_G(s)H(s)

命令格式:

Sys=feedback(sys1,sys2,sigr)

Sign为反馈极性,若为正反馈其值为缺省时默认为负(即sign=-1)。

例5设有下面两个系统:

1,若为负反馈其值为-1

s1

s22s3

g2(s)=

1

s10

现要将它们负反馈连接,求传递函数

执行下面程序:

>>n1=[11];

>>d仁[123];

>>G仁tf(n1,d1);

>>n2=[1];

>>d2=[110];

>>H2=tf(n2,d2);

>>sys=feedback(G1,H2)

运行结果:

 

Transferfunction:

sA2+11s+10

sA3+12sA2+24s+31

例6已知系统如下

/、s+2g1(s)—

s+2s+3

求该系统闭环后的传递函数(负反馈)。

输入:

>>n仁[12];

>>d仁[123];

>>[n,d]=cloop(n1,d1)

运行结果:

n=

1

即:

闭环后系统的传递函数为

\s+2

g1(s)2

s+3s+5

5.生成二阶系统

ord2命令在给定,E下可以生成相应的二阶系统,即:

92)=孑^is-n2

1

命令格式:

[n,d]=ord2其中:

z=

(Wn,z)EWn=‘n

四、实验步骤

1.运行Matlab软件;

2•在其命令窗口中输入响应的命令或程序;

3.观察并记录。

已知系统传递函数为:

32

12s24s12s20

五、实验习题

G(S)2s4+4s3+6孑+2s+2

求上述传递函数的零极点的表达形式。

一、实验目的:

通过上机实验,掌握运用MATLAB常用命令对系统进行时域分析的基本方法。

二、实验仪器

计算机

三、实验内容

2.1单位阶跃响应的求法

step命令可以求得连续系统的单位阶跃响应,当不带输出变量时,可在当前窗口中绘出单位阶跃响应曲线。

带有输出变时时则输出一组数据。

命令格式:

step(n,d,t);或[y,x,t]=step(n,d,t);

其中t是事先确定的时间矢量,当t缺省时则时间由函数自行决定。

如果需要将输出结果返回到MATLAB工作空间,则采用以下调用格式:

c=step(G)

此时,屏幕上不会显示响应曲线,必须利用plot()命令去查看响应曲线。

Plot

可以根据两个或多个给定的矢量绘制二维图形。

例1已知传递函数为

G(s)=—

s2+4s+25

利用以下MALAB命令可得阶跃响应曲线

num=[0,0,25];

den=[1,4,25];

step(num,den)

grid%绘制网格线

/\

\

/

/

1

J

/

1

1

1f

!

StepResponse

0.4

0.2

0.5

11.5

Time(sec)

2

2.53

42

86egJ-omA

还可用下面的语句来得出阶跃响应曲线:

G=tf([0,0,25],[1,4,25]);

t=0:

0.1:

5;%从0到5每隔0.1取一个值

c=step(G,t);%动态响应的幅值赋给变量c

plot(t,c)%绘二维图形,横坐标取t,纵坐标取c

Css=dcgain(G)%求取稳态值

系统显示的图形类似于上一个例子,在命令窗口中显示了如下结果:

Css=1

2.2求阶跃响应的性能指标

方法一:

游动鼠标法

如上例,在程序运行完毕后,用鼠标左键单击时域响应曲线任意一点,系统会自动跳出一个小方框,小方框显示了这一点的横坐标(时间)和纵坐标(幅值)按住鼠标左键在曲线上移动,可找到曲线幅值最大的一点,即曲线最大峰值,此

时小方框显示的时间就是此二阶系统的峰值时间,根据观测到的稳态值和峰值可计算出系统的超调量。

系统的上升时间和稳态响应时间可以此类推。

注:

它不适用于用plot()命令画出的图形。

方法二:

用编程方式求取时域响应的各项性能指标

通过前面的学习,我们已经可以用阶跃响应函数step()获得系统输出量,若将输出量返回到变量y中,可调用如下格式:

[y,t]=step(G)

对返回的这一对y和t变量的值进行计算,可得到时域性能指标。

峰值时间(timetopeak)可由以下命令获得:

[Y,k]=max(y);

timetopeak=t(k)

应用取最大值函数max()求出y的峰值及相应的时间,并存于变量Y和k中然后在变量t中取出峰值时间,并将它赋给变量timetopeak。

最大(百分比)超调量(percentovershoo)t可由以下命令获得:

C=dcgain(G);

[Y,k]=max(y);

percentovershoot=100*(Y-C)/C

dcgain()函数用于求取系统的终值,将终值赋给变量C,然后依据超调量的定义,由Y和C计算出百分比超调量。

上升时间(risetime)可利用MATLAB中的循环控制语句编制M文件来获得。

要求出上升时间,可用while语句编写以下程序得到:

C=dcgain(G);

n=1

whiley(n)

n=n+1;

end

risetime=t(n)

在阶跃输入条件下,y的值由零逐渐增大,当以上循环满足y=C时,推出循环,此时对应的时刻即为上升时间。

对于输出无超调的系统响应,上升时间定义为输出从稳态值的10%上升到90%所需时间,则计算程序如下:

C=dcgain(G);

n=1;

whiley(n)<0.1*C

n=n+1;

end

m=1;

whiley(n)<0.9*C

m=m+1;

end

risetime=t(m)-t(n)

调节时间(setllingtime)可由语句编程得到:

C=dcgain(G);

i=length(t);

while(y(i)>0.98*C)&(y(i)<1.02*C)

i=i-1;

end

setllingtime=t(i)

用矢量长度函数length()可求得t序列的长度,将其设定为变量i的上限值。

G(s)=;

例2已知二阶系统传递函数为J|1i-I=

利用下面的程序可得到阶跃响应如图所示及性能指标数据。

G=zpk([],[-1+3*i,-1-3*i],3);%计算最大峰值时间和它对应的超调量。

C=dcgain(G)

[y,t]=step(G);

Plot(t,y)

grid

[Y,k]=max(y);

timetopeak=t(k)

percentovershoot=100*(Y-C)/C%计算上升时间。

n=1;

whiley(n)

n=n+1;

end

risetime=t(n)%计算稳态响应时间。

i=length(t);

while(y(i)>0.98*C)&(y(i)<1.02*C)

i=i-1;

end

setllingtime=t(i)

运行后的响应图如下图所示,命令窗口中显示的结果为:

C=0.3000timetopeak=1.0491

percentovershoot=35.0914risetime=0.6626

setllingtime=3.5337

2.2.3求系统的单位冲激响应

impulse命令可求得系统的单位冲激响应。

当不带输出变量时可在当前窗口得到单位冲激响应曲线,带有输出变量时则得到一组对应的数据。

命令格式:

[y,x,t]=impulse(num,den,t)或impulse(num,den,t)

用[y,x,t]=impulse(num,den,t)时,要用Plot()函数才能打出曲线。

用impulse

(num,den,t)时,可直接打出曲线。

例3求下列系统的单位冲激响应

C(s)10

G(s)二丁

R(s)s20.3s1

Matlab命令为:

>>t=[0:

0.1:

40];

>>num=1;

>>den=[1,0.3,1];

>>impulse(num,den,t);

>>grid;

其相应结果为:

-0.6

0

fI

;1

1

f\

f1

\

1

J

/

ii

1

\J

ImpulseResponse

-0.4

5

10

152025

Time(seconds)

303540

864ooo

202

o0

例4:

求下列系统的单位冲激响应:

G(s)二

1

s2s1

解:

Matlab命令为:

t=[0:

0.1:

10];num=1;den=[111];[y,x,t]=impulse(num,den,t)plot(t,y);gridxlabel('Time[sec]t')ylabel('y')

响应结果为:

 

0.6

0.5

0.4

0.3

j\

y

0.2

0.1'

0

-0.1

012345678910

Time[sec]t

224任意函数作用下系统的响应用线性仿真函数Isim来实现,其调用格式为:

y=lsim(sys,u,t)

式中:

sys为系统数学模型;y(t)为系统输出响应;u为系统输入信号;t为仿时间例5:

已知闭环系统传递函数为:

C(s)

R(s)

=G(s)二

10

~32

s30.3s21

对正弦输入r(t)二sin(t),求输出响应解:

Matlab命令如下:

num=[1];

den=[1,0.3,1.0];y=tf(num,den);t=[0:

0.1:

20];

u=sin(t);c=lsim(y,u,t);

plot(t,c);

grid;

xlabel('tsec');

ylabel('inputandoutput')其响应结果如下图:

4

四、实验步骤

1运行Matlab软件;

2、在其命令窗口中输入响应的命令或程序;

3、观察并记录。

五、实验习题

对课本122页题3.14的系统

求其单位阶跃响应的最大值,峰值时间和它对应的超调量,上升时间并与手工计算结果进行比较•

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

当前位置:首页 > 工程科技 > 能源化工

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

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