當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。