本文简要介绍 python 语言中 scipy.signal.sosfiltfilt
的用法。
用法:
scipy.signal.sosfiltfilt(sos, x, axis=-1, padtype='odd', padlen=None)#
使用级联二阶部分的 forward-backward 数字滤波器。
有关此方法的更多完整信息,请参阅
filtfilt
。- sos: array_like
二阶滤波器系数数组,必须具有形状
(n_sections, 6)
。每行对应一个二阶部分,前三列提供分子系数,后三列提供分母系数。- x: array_like
要过滤的数据数组。
- axis: 整数,可选
应用过滤器的 x 轴。默认值为 -1。
- padtype: str 或无,可选
必须是‘odd’, ‘even’, ‘constant’,或无。这决定了用于应用滤波器的填充信号的扩展类型。如果 padtype 为 None,则不使用填充。默认值为‘odd’。
- padlen: int 或无,可选
要扩展的元素数x在两端轴在应用过滤器之前。该值必须小于
x.shape[axis] - 1
.padlen=0
意味着没有填充。默认值为:3 * (2 * len(sos) + 1 - min((sos[:, 2] == 0).sum(), (sos[:, 5] == 0).sum()))
最后的额外减法试图补偿原点处的极点和零点(例如,对于odd-order 过滤器)以产生等效估计帕伦对那些scipy.signal.filtfilt对于用构建的二阶部分滤波器
scipy.signal
职能。
- y: ndarray
与 x 形状相同的过滤输出。
参数 ::
返回 ::
注意:
例子:
>>> import numpy as np >>> from scipy.signal import sosfiltfilt, butter >>> import matplotlib.pyplot as plt >>> rng = np.random.default_rng()
创建一个有趣的信号进行过滤。
>>> n = 201 >>> t = np.linspace(0, 1, n) >>> x = 1 + (t < 0.5) - 0.25*t**2 + 0.05*rng.standard_normal(n)
创建一个低通巴特沃斯滤波器,并用它来过滤 x。
>>> sos = butter(4, 0.125, output='sos') >>> y = sosfiltfilt(sos, x)
为了比较,使用 8 阶滤波器scipy.signal.sosfilt.使用前四个值的平均值初始化过滤器x.
>>> from scipy.signal import sosfilt, sosfilt_zi >>> sos8 = butter(8, 0.125, output='sos') >>> zi = x[:4].mean() * sosfilt_zi(sos8) >>> y2, zo = sosfilt(sos8, x, zi=zi)
绘制结果。请注意,y 的相位与输入相匹配,而 y2 具有显著的相位延迟。
>>> plt.plot(t, x, alpha=0.5, label='x(t)') >>> plt.plot(t, y, label='y(t)') >>> plt.plot(t, y2, label='y2(t)') >>> plt.legend(framealpha=1, shadow=True) >>> plt.grid(alpha=0.25) >>> plt.xlabel('t') >>> plt.show()
相关用法
- Python SciPy signal.sosfilt用法及代码示例
- Python SciPy signal.sosfilt_zi用法及代码示例
- Python SciPy signal.sosfreqz用法及代码示例
- Python SciPy signal.sos2tf用法及代码示例
- Python SciPy signal.step2用法及代码示例
- Python SciPy signal.spectrogram用法及代码示例
- Python SciPy signal.square用法及代码示例
- Python SciPy signal.step用法及代码示例
- Python SciPy signal.sweep_poly用法及代码示例
- Python SciPy signal.savgol_coeffs用法及代码示例
- Python SciPy signal.symiirorder1用法及代码示例
- Python SciPy signal.sawtooth用法及代码示例
- Python SciPy signal.symiirorder2用法及代码示例
- Python SciPy signal.stft用法及代码示例
- Python SciPy signal.ss2tf用法及代码示例
- Python SciPy signal.savgol_filter用法及代码示例
- Python SciPy signal.spline_filter用法及代码示例
- Python SciPy signal.czt_points用法及代码示例
- Python SciPy signal.chirp用法及代码示例
- Python SciPy signal.residue用法及代码示例
- Python SciPy signal.iirdesign用法及代码示例
- Python SciPy signal.max_len_seq用法及代码示例
- Python SciPy signal.kaiser_atten用法及代码示例
- Python SciPy signal.oaconvolve用法及代码示例
- Python SciPy signal.hilbert用法及代码示例
注:本文由纯净天空筛选整理自scipy.org大神的英文原创作品 scipy.signal.sosfiltfilt。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。