控制系统传递函数的MATLAB表示
控制系统传递函数的MATLAB 表示
一、传递函数的两种形式
1.有理分式形式
分别将分子、分母中s 多项式的系数按降幂排列成行矢量,缺项的系数用0补齐。上述函数可表示为
num1=[2 1]%(注意:方括号,同一行的各元素间留空格或逗号)。
den1=[1 2 2 1]
syss1=tf(num1,den1)
运行后,返回传递函数G 1(s ) 的形式。这种形式不能直接进行符号运算!
2.零极点增益形式
[Z,P,K] = tf2zp(num1,den1)
sys2 = zpk(Z,P,K)
返回零、极点、增益表达式,其Z ,P 分别将零点和极点表示成列向量,若无零点或极点用
[ ](空矩阵)代替。
运行得到G 1(s ) 的
零点 Z = -0.5
极点 P = -1,-0.5±j 0.866
增益 K = 2
指令zp2tf(Z,P ,K) 将零极点增益变换成有理分式形式,见程序fanli005。
参考程序fanli005:传递函数的有理分式及零极点增益模型
num1=[2 1] % 传递函数的分子系数向量
den1=[1 2 2 1] % 传递函数的分母系数向量
sys1=tf(num1,den1) % 传递函数的有理分式模型
[Z,P,K]=tf2zp(num1,den1)
% 有理分式模型转换成零极点增益模型
[num2,den2]=zp2tf(Z,P,K)
% 零极点增益模型转换成有理分式模型
sys2=zpk(Z,P,K) % 传递函数的零极点增益模型
[A1,B1,C1,D1]=tf2ss(num1,den1)
% 有理分式模型转换成状态空间模型
[A2,B2,C2,D2]=zp2ss(Z,P,K)
% 零极点及增益模型转换成状态空间模型
[num1,den1]=ss2tf(A1,B1,C1,D1)
% 状态空间模型转换成有理分式模型
[Z,P,K]=ss2zp(A2,B2,C2,D2)
% 状态空间模型转换成零极点增益模型
程序中,命令tf2ss ,zp2ss 及ss2tf ,ss2zp 是状态空间模型与有理分式及零、极点、增益模型之间的相互转换。
二、传递函数框图的处理
用框图可以方便地表示传递函数的并联,串联及反馈。为简洁,仅以有理分式模型为例。
1. 并联
sysp = parallel(sys1,sys2)
[num,den]=parallel(num1,den1,num2,den2)
2. 串联
syss = series(sys1,sys2)
[nums,dens] = series(num1,den1,num2,den2)
2(s)
3. 反馈
sysc=feedback(syss,sys3,±1) %默认值(-1)
[numc, denc] = feedback(nums, dens, num3, den3)
G 1(s)G2(s) 1+G1(s)G2(s) G3(s)
4. 单位反馈
G 1(s)G2(s) 1+G1(s)G2(s)
sysd = feedback(syss, 1)
[numd, dend] = feedback(nums, dens, 1, 1)%(单位反馈)
上面给出了同一指令的两种形式,相当于两套平行指令。
对于零极点增益形式,书写稍复杂一些,可先用zpk 转换成系统形式,或用zp2tf 转折换成有理分式形式后再进行框图化简操作。