scipy.signal.
decimate#
- scipy.signal.decimate(x, q, n=None, ftype='iir', axis=-1, zero_phase=True)[源代码]#
在应用抗混叠滤波器后对信号进行降采样。
默认情况下,使用 8 阶切比雪夫 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, 可选
通过在使用 IIR 滤波器时使用
filtfilt
而不是lfilter
来防止相移,并在使用 FIR 滤波器时将输出向后移动滤波器群延迟。建议使用默认值True
,因为通常不希望出现相移。0.18.0 版本中新增。
- 返回:
- yndarray
降采样后的信号。
另请参见
resample
使用 FFT 方法向上或向下重采样。
resample_poly
使用多相滤波和 FIR 滤波器进行重采样。
说明
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()