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()
../../_images/scipy-signal-decimate-1.png