scipy.signal.
decimate#
- scipy.signal.decimate(x, q, n=None, ftype='iir', axis=-1, zero_phase=True)[原始碼]#
在應用抗鋸齒濾波器後,對訊號進行降採樣。
預設情況下,使用 8 階 Chebyshev Type 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()