当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python SciPy signal.decimate用法及代码示例


本文简要介绍 python 语言中 scipy.signal.decimate 的用法。

用法:

scipy.signal.decimate(x, q, n=None, ftype='iir', axis=-1, zero_phase=True)#

应用抗混叠滤波器后对信号进行下采样。

默认情况下,使用 8 阶 Chebyshev I 型滤波器。如果 ftype 为‘fir’,则使用带有汉明窗的 30 点 FIR 滤波器。

参数

x array_like

要下采样的信号,作为 N 维数组。

q int

下采样因子。使用 IIR 下采样时,建议多次调用decimate,以实现高于 13 的下采样因子。

n 整数,可选

过滤器的顺序(1 小于 ‘fir’ 的长度)。 ‘iir’ 的默认值为 8,‘fir’ 的下采样因子为 20 倍。

ftype str {‘iir’, ‘fir’} 或 dlti 实例,可选

如果‘iir’或‘fir’,指定低通滤波器的类型。如果是 dlti 对象的实例,则在下采样之前使用该对象进行过滤。

axis 整数,可选

要抽取的轴。

zero_phase 布尔型,可选

在使用 IIR 滤波器时,通过使用 filtfilt 而不是 lfilter 进行滤波来防止相移,并在使用 FIR 滤波器时将输出移回滤波器的群延迟。建议使用默认值True,因为通常不需要相移。

返回

y ndarray

下采样信号。

注意

zero_phase 关键字是在 0.18.0 中添加的。在 0.18.0 中添加了将 dlti 实例用作 ftype 的可能性。

例子

>>> import numpy as np
>>> from scipy import signal
>>> import matplotlib.pyplot as plt

定义波参数。

>>> wave_duration = 3
>>> sample_rate = 100
>>> freq = 2
>>> q = 5

计算样本数。

>>> samples = wave_duration*sample_rate
>>> samples_decimated = int(samples/q)

创建余弦波。

>>> x = np.linspace(0, wave_duration, samples, endpoint=False)
>>> y = np.cos(x*np.pi*freq*2)

抽取余弦波。

>>> ydem = signal.decimate(y, q)
>>> xnew = np.linspace(0, wave_duration, samples_decimated, endpoint=False)

绘制原始波和抽取波。

>>> plt.plot(x, y, '.-', xnew, ydem, 'o-')
>>> plt.xlabel('Time, Seconds')
>>> plt.legend(['data', 'decimated'], loc='best')
>>> plt.show()
scipy-signal-decimate-1.png

相关用法


注:本文由纯净天空筛选整理自scipy.org大神的英文原创作品 scipy.signal.decimate。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。