scipy.signal.
decimate#
- scipy.signal.decimate(x, q, n=None, ftype='iir', axis=-1, zero_phase=True)[来源]#
应用抗混叠滤波器后对信号进行下采样。
默认情况下,使用 8 阶 Chebyshev I 型滤波器。如果 ftype 为 ‘fir’,则使用带有汉明窗的 30 点 FIR 滤波器。
- 参数:
- xarray_like
要下采样的信号,作为 N 维数组。
- qint
下采样因子。使用 IIR 下采样时,建议对高于 13 的下采样因子多次调用
decimate
。- nint,可选
滤波器的阶(对于 ‘fir’ 低于长度 1)。对于 ‘iir’ 默认为 8,对于 ‘fir’ 默认为下采样因子 20 倍。
- ftypestr {‘iir’, ‘fir’} 或
dlti
实例,可选 如果为‘iir’或‘fir’,则指定低通滤波器的类型。如果为
dlti
对象的实例,则在向下采样之前使用该对象进行滤波。- axisint,可选
进行抽取的轴。
- zero_phasebool,可选
使用
filtfilt
而不是lfilter
进行滤波,以防止相移使用 IIR 滤波器时,使用 FIR 滤波器时,则将输出向后移动滤波器的群延迟。推荐使用True
的默认值,因为通常不需要相移。0.18.0 版中新增。
- 返回:
- yndarray
向下采样的信号。
另请参见
resample
使用 FFT 方法向上或向下采样。
resample_poly
使用多相滤波和 FIR 滤波器重新采样。
备注
0.18.0 中新增了
zero_phase
关键字。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()