scipy.signal.
tf2zpk#
- scipy.signal.tf2zpk(b, a)[原始碼]#
從線性濾波器的分子、分母表示式,回傳零點、極點、增益 (z, p, k) 表示式。
- 參數:
- barray_like
分子多項式係數。
- aarray_like
分母多項式係數。
- 回傳值:
- zndarray
傳遞函數的零點。
- pndarray
傳遞函數的極點。
- kfloat
系統增益。
註解
如果 b 的某些值太接近 0,它們會被移除。在這種情況下,會發出 BadCoefficients 警告。
b 和 a 陣列被解釋為傳遞函數變數的正冪、降冪的係數。因此,輸入 \(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}\]這種「正冪」形式在控制工程中更常見。如果 M 和 N 相等(對於雙線性轉換產生的所有濾波器都是如此),那麼這恰好等同於 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}}\]雖然這對於常見的濾波器來說是正確的,但請記住,這在一般情況下並不正確。如果 M 和 N 不相等,則離散時間傳遞函數係數必須首先轉換為「正冪」形式,然後才能找到極點和零點。
範例
找出具有以下傳遞函數的濾波器的零點、極點和增益
\[H(s) = \frac{3s^2}{s^2 + 5s + 13}\]>>> from scipy.signal import tf2zpk >>> tf2zpk([3, 0, 0], [1, 5, 13]) ( array([ 0. , 0. ]), array([ -2.5+2.59807621j , -2.5-2.59807621j]), 3.0)