scipy.signal.

normalize#

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

標準化連續時間轉移函數的分子/分母。

如果 b 的值太接近 0,它們將被移除。在這種情況下,會發出 BadCoefficients 警告。

參數:
b: 陣列型 (array_like)

轉移函數的分子。可以是 2 維陣列以標準化多個轉移函數。

a: 陣列型 (array_like)

轉移函數的分母。最多 1 維。

回傳值:
num: 陣列

標準化轉移函數的分子。至少 1 維陣列。如果輸入 num 是 2 維陣列,則為 2 維陣列。

den: 1 維陣列

標準化轉移函數的分母。

註解

分子和分母的係數都應以指數遞減的順序指定 (例如,s^2 + 3s + 5 將表示為 [1, 3, 5])。

範例

>>> from scipy.signal import normalize

標準化轉移函數 (3*s^2 - 2*s + 5) / (2*s^2 + 3*s + 1) 的係數

>>> b = [3, -2, 5]
>>> a = [2, 3, 1]
>>> normalize(b, a)
(array([ 1.5, -1. ,  2.5]), array([1. , 1.5, 0.5]))

如果例如 b 的第一個係數為 0,則會產生警告。在以下範例中,結果如預期

>>> import warnings
>>> with warnings.catch_warnings(record=True) as w:
...     num, den = normalize([0, 3, 6], [2, -5, 4])
>>> num
array([1.5, 3. ])
>>> den
array([ 1. , -2.5,  2. ])
>>> print(w[0].message)
Badly conditioned filter coefficients (numerator): the results may be meaningless