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