scipy.signal.

normalize#

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

对连续时间传递函数进行分子/分母规范化。

如果b 的值过小,它们将被移除。在这种情况下,将发出 BadCoefficients 警告。

参数:
b: 类似数组

传递函数的分子。可以是用于规范化多个传递函数的 2-D 数组。

a: 类似数组

传递函数的分母。最多为 1-D。

返回:
num: 数组

规范化传递函数的分子。至少为 1-D 数组。如果输入num 是 2-D 数组,则为 2-D 数组。

den: 1-D 数组

规范化传递函数的分母。

说明

分子和分母的系数应按指数下降顺序指定(例如,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