scipy.signal.
sosfilt_zi#
- scipy.signal.sosfilt_zi(sos)[source]#
为 sosfilt 构造用于阶跃响应稳态的初始条件。
计算
sosfilt
函数的初始状态 zi,该状态对应于阶跃响应的稳态。此函数的典型用途是设置初始状态,使滤波器的输出以与待滤波信号的第一个元素相同的值开始。
- 参数:
- sosarray_like
二阶滤波器系数数组,必须具有形状
(n_sections, 6)
。有关 SOS 滤波器格式规范,请参见sosfilt
。
- 返回:
- zindarray
适用于
sosfilt
的初始条件,形状为(n_sections, 2)
。
备注
版本 0.16.0 中新增。
示例
使用和不使用
scipy.signal.sosfilt
的 zi 参数,对从时间 0 开始的矩形脉冲进行滤波。>>> import numpy as np >>> from scipy import signal >>> import matplotlib.pyplot as plt
>>> sos = signal.butter(9, 0.125, output='sos') >>> zi = signal.sosfilt_zi(sos) >>> x = (np.arange(250) < 100).astype(int) >>> f1 = signal.sosfilt(sos, x) >>> f2, zo = signal.sosfilt(sos, x, zi=zi)
>>> plt.plot(x, 'k--', label='x') >>> plt.plot(f1, 'b', alpha=0.5, linewidth=2, label='filtered') >>> plt.plot(f2, 'g', alpha=0.25, linewidth=4, label='filtered with zi') >>> plt.legend(loc='best') >>> plt.show()