MATLAB 创建传递函数模型
MATLAB 创建多项式的方式有两种:
- 系数多项式
- 符号多项式
1. 系数多项式
p = [an . . . a1 a0]
p_value = polyval(p, k) % 计算自变量值为k时,多项式的值
r = roots(p) % 计算多项式的根
2. 符号多项式
syms t % 创建符号变量 t
p = t^2+2*t+1 % 创建符号多项式
p_value = subs(p, k) % 计算自变量值为k时,多项式的值
3. 两种形式之间相互转换
sym2poly(p) % 符号多项式→系数多项式 (包含为零的所有系数)
coeffs(p) % 符号多项式→系数多项式 (除去为零的所有系数)
poly2sym(p) % 系数多项式→符号多项式
分式有理函数的裂项形式如下:
pi为系统的极点,ci为常数,ks为增益系数。
分式有理函数与裂项形式之间的相互转换:
[c, p, k] = residue(num, den) % num, den 分别为有理函数的分子和分母
[num, den] = residue(c, p, k) % 裂项形式→分式函数形式
传递函数是线性定常系统,在零初始条件下,以复数为变量的有理函数。
描述的是系统输入与输出之间的关系,如下所示:
创建传递函数命令一:
sys = tf(num, den)
创建一个时间连续传递函数。
创建传递函数命令二:
sys = zpk(z, p, k) % z, p 均为阵列,包含系统所有的零、极点,k 为增益系数。
% 当系统传递函数没有零点时,仅输入 z = [ ]
创建一个“零-极点”形式的传递函数,如下所示:
能直观地看出系统的零点、极点。
创建传递函数命令三:
s = tf('s') % 创建多项式形式传递函数的变量 s
s = zpk('s') % 创建系数形式传递函数的变量 s
同样地,上述两种形式传递函数之间可以互相转换:
s = tf('s') % 将原本系数形式的传递函数的变量 s 转换为多项式形式
s = zpk('s') % 将原本多项式形式的传递函数的变量 s 转换为系数形式
此种方法类似于创建符号多项式,先用“syms t”声明一个符号变量 t,再创建多项式。
主要用于子系统传递函数,而系统总传递函数未知的场景中。
互相转换方法:
分式形式(多项式形式)⇌ “零点-极点-增益”形式(系数形式)
1. 分式形式→“零点-极点-增益”形式
sys = tf(num, den) % 分式形式传递函数
sys_zpk = zpk(sys) % 分式形式的传递函数→“零点-极点-增益”形式的传递函数
或者
[z, p, k] = tf2zp(num, den) % tf2zp(num, den) 输入“分子-分母”,返回传递函数的“z, p, k”
sys = zpk(z, p, k) % 即上面的“创建传递函数命令二”
2. “零点-极点-增益”形式→分式形式
sys = zpk(z, p, k)
sys_tf = tf(sys) % “零点-极点-增益”形式的传递函数→分式形式的传递函数
或者
[num, den] = zp2tf(z, p, k) % zp2tf(z, p, k) 输入“z, p, k”,返回传递函数的“分子-分母”
sys = tf(num, den) % 即上面的“创建传递函数命令一”
练习题 1:
用tf(num, den)命令创建如下所示传递函数,并将其转换为“零点-极点-增益”形式。
解答:
num = [1 1];
den = [1 3 1];
sys = tf(num, den)
sys_zpk = zpk(sys)
练习题 2:
用zpk(z, p, k)命令创建如下所示传递函数,并将其转换为分式形式。
解答:
z = [-2];
p = [-1 -1 -3];
k = 1;
sys = zpk(z, p, k)
sys_tf = tf(sys)
练习题 3:
用创建传递函数的变量方式,创建不同形式的传递函数。
解答:
s = tf('s');
sys = (s+1)/(s^2+2*s+1)
s = zpk('s');
sys = (s+1)/(s^2+2*s+1)