实验一 MATLAB系统模型建立实验
一、实验目的
1.掌握如何使用MALAB进行系统模型的建立; 2.掌握数学建模的一般方法。 二、实验仪器
计算机 三、实验内容
3.1传递函数的多项式表示
单输入单输出线性连续系统的传递函数有3种表示形式:多项式形式,零、极点表示形式和时间常数表示形式,后两种都可以看做是多项式乘积的形式,因此我们先看看MATLAB是如何处理多项式的。 1.多项式的向量表示
MATLAB中多项式用向量表示,行向量元素依次为降幂排列的多项式各项系数。
例如:多项式P(s)?s4?3s3?2s?5,表示为: P=[1,3,0,2,5]
注意:尽管s2项系数为0,但输入P时不可缺省0 2.多项式乘法
MATLAB中多项式乘法处理函数调用格式为: C=conv(A,B)
例如:给定两个多项式A(s)=s+3和B(s)?10s2?20s?3,求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 =
10 50 63 9 或直接写成
C=conv([1,3],[10,20,3])
例如:G(s)?4*conv([1,2],conv([1,3],[1,4]))
3.传递函数的多项式表示
bmsm?bm?1sm?1?...?b1s?b0 G(s)? nn?1ans?an?1s?...?a1s?a0在MATLAB中直接用矢量组表示传递函数的分子、分母多项式系数,即: num = [bm bm-1…b0]; 表示传递函数的分子多项式系数 den = [an an-1…a0]; 表示传递函数的分母多项式系数 sys = tf(num,den) tf命令将sys变量表示成传递函数模型。
例1用MATLAB表示传递函数为解:在MATLAB环境下输入 >> ng=[1 1]; dg=[1 3 2]; >> sys=tf(ng,dg) 则执行后得到如下结果: sys = s + 1 ------------- s^2 + 3 s + 2 Continuous-time transfer function. s?1 的系统。 s2?3s2?2s 3.2零极点增益模型
(s?z1)?(s?z2)...(s?zm)G(s)?k
(s?p1)?(s?p2)...(s?pn)在MATLAB中用z、p、k矢量组分别表示系统的零点、极点和增益,即: z = [ z1 z2…… zm ]; p = [ p1 p2…… pn ]; k =[ k ];
sys = zpk(z,p,k) zpk命令将sys变量表示成零极点增益模型。 例2 用MATLAB表示传递函数为解:在MATLAB环境下输入 >> z=-1; p=[0 -1 -2]; k=1.5; >> Gz=zpk(z,p,k) 执行结果为: 1.5(s?1) 的系统。 s(s?1)(s?2)Zero/pole/gain: 1.5 (s+1) ------------- s (s+1) (s+2)
3.3、状态空间模型
x = ax + bu y = cx + du
在MATLAB中用(a、b、c、d)矩阵组表示,然后
sys = ss(a,b,c,d) ss命令将sys变量表示成状态空间模型。
3.4 连续系统的模型转换
1.多项式形式转换为零、极点形式
12s3?24s2?12s?20例如:G(s)?4 322s?4s?6s?2s?2程序:>> num=[12 24 12 20];
>> den=[2,4,6,2,2]; >> G=tf(num,den); >> GG=zpk(G) 运行结果: Zero/pole/gain:
6 (s+1.929) (s^2 + 0.07058s + 0.8638) -------------------------------------------------
(s^2 + 0.08663s + 0.413) (s^2 + 1.913s + 2.421) 2.零、极点形式转换为多项式形式
10(s?1)(s?2)例:G(s)?
s(s?5)(s?10)>> z=[-1,-2]; >> p=[0,-5,-10]; >> k=10;
>> Gz=zpk(z,p,k); >> GG=tf(Gz) 运行结果为: Transfer function: 10 s^2 + 30 s + 20 ------------------- s^3 + 15 s^2 + 50 s
3.5传递函数的部分分式展开 当:
时
在MATLAB中直接用分子/分母的系数表示时有 num=[b0,b1,…,bm]; den = [a0,a1,…,an]; 则命令
[r,p,k] = residue(num,den)
将求出两个多项式Y(s)和X(s)之比的部分分式展开的留数、极点和直接项。Y(s)/X(s)的部分分式展开由下式给出:
例3 考虑下列传递函数:
命令 : num=[2 5 3 6]; den=[1 6 11 6];
[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。以下是Y(s)/X(s)的部分分式展开的MATLAB表达形式:
命令
Num=[2 5 3 6];
Den=conv(conv([1 1],[1 2]),[1 3]); [num,den] = residue(r,p,k) 执行后得到如下结果: [num,den]=residue(r,p,k) num=
2.0000 5.0000 3.0000 6.0000 den=
1.0000 6.0000 11.0000 6.0000 3.1.3 模型间的关系与系统建模
实际工作中常常需要由多个简单系统构成复杂系统,MATLAB中有下面几种命令可以解决两个系统间的连接问题。
1.系统的并联
parallel 命令可以实现两个系统的并联。示意图如下:
u1 G1 y1 u + y u2 + G2 y2 num1num2 其中:G1? G2?
den1de2n例4 将下面两个系统并联连接
32s?4 g1(s)? g2(s)?2
s?4s?2s?3>> n1=[3]; >> d1=[1 4]; >> G1=tf(n1,d1); >> n2=[2 4]; >> d2=[1 2 3]; >> G2=tf(n2,d2);
>> G=parallel(G1,G2) 运行结果为: Transfer function: 5 s^2 + 18 s + 25 ----------------------- s^3 + 6 s^2 + 11 s + 12