scipy.signal.tf2zpk

scipy.signal.tf2zpk(b, a)[源代码]

从分子和分母返回零,极点,增益(z,p,k)表示线性过滤。

参数
barray_like

分子多项式系数。

aarray_like

分母多项式系数。

退货
zndarray

传递函数的零点。

pndarray

传递函数的极点。

k浮动

系统增益。

注意事项

如果某些值为 b 太接近0,则它们将被删除。在这种情况下,将发出BadCofficients警告。

这个 ba 数组被解释为传递函数变量的正的递减幂的系数。所以这些输入 \(b = [b_0, b_1, ..., b_M]\)\(a =[a_0, a_1, ..., a_N]\) 可以表示以下形式的模拟过滤:

\[H(S)=\frac {b_0 s^M+b_1 s^{(M-1)}+\cdots+b_M} {a_0 s^N+a_1 s^{(N-1)}+\cdots+a_N}\]

或者是以下形式的离散时间过滤:

\[H(Z)=\frac {b_0 z^M+b_1z^{(M-1)}+\cdots+b_M} {a_0 z^N+a_1z^{(N-1)}+\cdots+a_N}\]

这种“正幂”形式在控制工程中更为常见。如果 MN 相等(这对于双线性变换生成的所有滤波器都是正确的),则恰好等同于DSP中首选的“负幂”离散时间形式:

\[H(Z)=\frac {b_0+b1 z^{-1}+\cdots+b_M z^{-M}} {a_0+a_1 z^{-1}+\cdots+a_N z^{-N}}\]

虽然这对于普通筛选器是正确的,但请记住,在一般情况下不是这样。如果 MN 不相等时,必须先将离散时间传递函数系数转换为“正幂”形式,然后才能找到极点和零点。