firwin2#
- scipy.signal.firwin2(numtaps, freq, gain, *, nfreqs=None, window='hamming', antisymmetric=False, fs=None)[原始碼]#
使用視窗方法的 FIR 濾波器設計。
從給定的頻率 freq 和對應的增益 gain,此函數構建具有線性相位且(近似)給定頻率響應的 FIR 濾波器。
- 參數:
- numtapsint
FIR 濾波器中的抽頭數量。numtaps 必須小於 nfreqs。
- freqarray_like,1-D
頻率取樣點。通常為 0.0 到 1.0,其中 1.0 為奈奎斯特頻率。奈奎斯特頻率是 fs 的一半。freq 中的值必須為非遞減。一個值可以重複一次以實現不連續性。freq 中的第一個值必須為 0,最後一個值必須為
fs/2
。值 0 和fs/2
不得重複。- gainarray_like
頻率取樣點的濾波器增益。根據濾波器類型,會應用某些增益值約束,請參閱「注意事項」以了解詳細資訊。
- nfreqsint,optional
用於構建濾波器的內插網格大小。為了獲得最有效率的行為,這應該是 2 的冪次方加 1(例如,129、257 等)。預設值比不小於 numtaps 的最小 2 的冪次方多 1。nfreqs 必須大於 numtaps。
- windowstring 或 (string, float) 或 float,或 None,optional
要使用的視窗函數。預設值為“hamming”。請參閱
scipy.signal.get_window
以取得完整可能值列表。如果為 None,則不套用視窗函數。- antisymmetricbool,optional
結果脈衝響應是否為對稱/反對稱。請參閱「注意事項」以了解更多詳細資訊。
- fsfloat,optional
訊號的取樣頻率。cutoff 中的每個頻率都必須介於 0 和
fs/2
之間。預設值為 2。
- 返回:
- tapsndarray
FIR 濾波器的濾波器係數,為長度為 numtaps 的 1-D 陣列。
另請參閱
注意事項
從給定的一組頻率和增益,在頻域中構建所需的響應。將逆 FFT 應用於所需的響應,以建立相關的卷積核,並傳回此核心的前 numtaps 個係數,並按 window 縮放。
FIR 濾波器將具有線性相位。濾波器的類型由 'numtaps' 的值和 antisymmetric 旗標決定。有四種可能的組合
奇數 numtaps,antisymmetric 為 False,產生 I 型濾波器
偶數 numtaps,antisymmetric 為 False,產生 II 型濾波器
奇數 numtaps,antisymmetric 為 True,產生 III 型濾波器
偶數 numtaps,antisymmetric 為 True,產生 IV 型濾波器
除了 I 型濾波器之外,所有濾波器的幅度響應都受以下約束
II 型 – 在奈奎斯特頻率處為零
III 型 – 在零頻率和奈奎斯特頻率處為零
IV 型 – 在零頻率處為零
在 0.9.0 版本中新增。
參考文獻
[1]Oppenheim, A. V. 和 Schafer, R. W.,“Discrete-Time Signal Processing”,Prentice-Hall,Englewood Cliffs,New Jersey (1989)。 (例如,請參閱第 7.4 節。)
[2]Smith, Steven W.,“The Scientist and Engineer’s Guide to Digital Signal Processing”,第 17 章。http://www.dspguide.com/ch17/1.htm
範例
一個低通 FIR 濾波器,其響應在 [0.0, 0.5] 上為 1,並在 [0.5, 1.0] 上從 1 線性遞減到 0
>>> from scipy import signal >>> taps = signal.firwin2(150, [0.0, 0.5, 1.0], [1.0, 1.0, 0.0]) >>> print(taps[72:78]) [-0.02286961 -0.06362756 0.57310236 0.57310236 -0.06362756 -0.02286961]