利用Matlab描述和求解传递函数
系统数学模型表示形式
-
有理多项式模型
在MATLAB中,传递函数可以方便地由其分子和分母多项式系数所构成的两个向量唯一确定出来,即 num = [b0,b1,…bm]; den=[1,a1,…,an]。
则在MATLANB中G(s)可直接用num/den表示,即G(s) = num/den -
零-极点模型
在MATLAB下,零-极点模型可以由零点、极点和增益所构成的列向量唯一确定出来,即
Z = [z1;z2;…;zm]; P = [p1;p2;…;pm]; K = K
其中,Z为零点,P为极点,K为增益
MATLAB函数
1、多项式乘法运算函数:conv()
-
当传递函数的分子或分母由若干个多项式相乘表示时,可以直接调用
-
调用格式:p = conv(p1,p2)。其中p1,p2为多项式系数构成的向量
-
conv()允许多级嵌套
举个例子:某个函数的分子为(s^2+6s+6)(s ^2+6s+6),若p1 = [1,6,6]; p2 = [1,6,6];
p=conv(p1,p2),则p可表示该函数分子唯一确定的向量。
2、系统数学模型
- 传递函数模型(有理多项式):tf()。调用格式:Gtf = tf(num,den)
- 零-极点模型:zpk()。调用格式:Gzpk = zpk(Z,P,K)或Gzpk = zpk(Gtf)
- 状态方程模型:ss()。调用格式:Gss = ss(A,B,C,D)或Gss = ss(Gtf)
3、模型间的转换
- 传递函数模型转零-极点模型:tf2zp()。调用格式:[Z,P,K] = tf2zp(num,den)或Gzpk = tf2zp(Gtf)
- 传递函数模型转状态方程模型:tf2ss()。调用格式:[A,B,C,D] = tf2ss(num,den)或Gss = tf2ss(Gtf)
- 零-极点模型转传递函数模型:zp2tf()。调用格式:[num,den] = zp2tf(Z,P,K)或Gzpk = zp2tf(Gtf)
4、化简系统数学模型
- 串联连接环节合并:series()。调用格式:[num,den] =series(num1,den1,num2,den2)
- 并联连接环节合并:parallel()。调用格式:[num,den] = parallel(num1,den1,num2,den2)
- 反馈连接环节合并:feedback()。调用格式:[num,den] = feedback(num1,den1,num2,den2,sign)
- 下面举一个并联的例子来帮助理解:求G(s)。
在MATLAB编写以下代码:
运行如下:
注意:所得的Gtf,可以转换成Gzpk或Gss,可按上面“系统数学模型”或“模型间的转换”中的方法进行转换。
5、怎么记忆这些函数?
其实这些函数就是英文的缩写。例如,传递函数模型:tf(),其英文全称为transfer funtion。
综合举例
在MATLAB中编写以下代码:
运行结果如下:
在MATLAB中编写如下代码:
运行结果如下:
在MATLAB编写如下代码
运行结果如下: