cupyx.scipy.signal.tf2zpk#

cupyx.scipy.signal.tf2zpk(b, a)[source]#

从线性滤波器的分子、分母表示中返回零点、极点、增益 (z, p, k) 表示。

参数:
  • b (array_like) – 分子多项式系数。

  • a (array_like) – 分母多项式系数。

返回:

  • z (ndarray) – 传递函数的零点。

  • p (ndarray) – 传递函数的极点。

  • k (float) – 系统增益。

警告

此函数可能会同步设备。

另请参阅

scipy.signal.tf2zpk

注意

如果 b 的某些值过于接近 0,则会被移除。在这种情况下,会发出 BadCoefficients 警告。

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_1 z^{(M-1)} + \cdots + b_M} {a_0 z^N + a_1 z^{(N-1)} + \cdots + a_N}\]

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

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

虽然这对常见滤波器是成立的,但请记住在一般情况下并非如此。如果 MN 不相等,必须先将离散时间传递函数系数转换为“正幂”形式,然后再寻找极点和零点。