在MATLAB中,可以通过数组的方式来表示传递函数中的系数。
软件会以降幂方式,通过向量的形式输入。
传递函数的多项式一般形式为
G ( s ) = C ( s ) R ( s ) = b m s m + b m − 1 s m − 1 + . . . + b 1 s + b 0 a n s n + a n − 1 s n − 1 + . . . + a 1 s + a 0 G(s)=\frac{C(s)}{R(s)}=\frac{b_ms^m+b_{m-1}s^{m-1}+...+b_1s+b_0}{a_ns^n+a_{n-1}s^{n-1}+...+a_1s+a_0} G(s)=R(s)C(s)=ansn+an−1sn−1+...+a1s+a0bmsm+bm−1sm−1+...+b1s+b0
用如下形式表达该式中分子和分母多项式系数:
>> n=[bm bm-1 ... b1 b0];
%分子系数
>> d=[am am-1 ... a1 a0];
%分母系数
在建立传递函数模型时,需要用到的MATLAB函数:
tf函数:用于建立传递函数的多项式形式数学模型
>> y1=tf(n,d)
%其中n,d分别为传递函数的分子、分母的系数行向量
zpk函数:用于将多项式形式的传递函数转换为零-极点形式
>> y2=zpk(y1)
%其中y1为传递函数多项式形式数学模型
tf2zp函数:用于求系统的零-极点
>> [z,p]=tf2zp(n,d)
>其中n,d分别为传递函数的分子、分母的系数行向量
例题1:
使用MATLAB建立该系统的多项式形式模型和零-极点形式模型
G ( s ) = s 2 + 3 s + 2 s 4 + 2 s 3 + 2 s 2 + 5 s + 1 G\left(s\right)=\frac{s^2+3s+2}{s^4+{2s}^3+{2s}^2+5s+1} G(s)=s4+2s3+2s2+5s+1s2+3s+2
%%%%%% 以下为实现 %%%%%%
>> num=[1 3 2];
%传递函数的分子多项式
>> den=[1 2 2 5 1];
%传递函数的分子多项式
>> g1=tf(num,den)
%执行该语句后建立了系统的多项式形式模型
g1 =
s^2 + 3 s + 2
-----------------------------
s^4 + 2 s^3 + 2 s^2 + 5 s + 1
Continuous-time transfer function.
>> g2=zpk(g1)
%执行该命令后得到传递函数零-极点形式模型
g2 =
(s+2) (s+1)
-------------------------------------------
(s+2.082) (s+0.2149) (s^2 - 0.297s + 2.235)
Continuous-time zero/pole/gain model.
>> [z,p]=tf2zp(num,den)
%执行该命令后得到传递函数的零点和极点
%z为零点,p为极点
z =
-2
-1
p =
-2.0820 + 0.0000i
0.1485 + 1.4875i
0.1485 - 1.4875i
-0.2149 + 0.0000i
需要注意的问题:
1.系数向量中,常数为s的0次方项,不要落下
2.若传递函数分母或分母s的降幂顺序中,缺少s的某次项,则该项系数为0。在系数向量n或d中,该次项系数不可省略。
练习:
使用MATLAB建立多项式形式模型和零-极点形式模型
G ( s ) = 2 s 4 + 2 s 3 + 5 s + 1 G\left(s\right)=\frac{2}{s^4+{2s}^3+5s+1} G(s)=s4+2s3+5s+12
>> num=[2];
>> den=[1 2 0 5 1];
>> g1=tf(num,den)
g1 =
2
---------------------
s^4 + 2 s^3 + 5 s + 1
Continuous-time transfer function.
>> g2=zpk(g1)
g2 =
2
--------------------------------------------
(s+2.656) (s+0.1972) (s^2 - 0.8528s + 1.909)
Continuous-time zero/pole/gain model.
>> [z,p]=tf2zp(num,den)
z =
空的 0×1 double 列向量
p =
-2.6556 + 0.0000i
0.4264 + 1.3143i
0.4264 - 1.3143i
-0.1972 + 0.0000i