本文簡要介紹 python 語言中 scipy.signal.firwin2
的用法。
用法:
scipy.signal.firwin2(numtaps, freq, gain, *, nfreqs=None, window='hamming', nyq=<object object>, antisymmetric=False, fs=None)#
使用窗口方法設計 FIR 濾波器。
根據給定的頻率 freq 和相應的增益增益,此函數構造一個具有線性相位和(近似)給定頻率響應的 FIR 濾波器。
- numtaps: int
FIR 濾波器中的抽頭數。 numtaps 必須小於 nfreqs。
- freq: 數組,一維
頻率采樣點。通常為 0.0 至 1.0,其中 1.0 為奈奎斯特。奈奎斯特頻率是一半fs。中的值頻率必須是非減的。一個值可以重複一次以實現不連續性。第一個值在頻率必須為 0,並且最後一個值必須為
fs/2
。值 0 和fs/2
不得重複。- gain: array_like
濾波器在頻率采樣點處增益。根據濾波器類型,對增益值應用了某些約束,詳細信息請參見注釋。
- nfreqs: 整數,可選
用於構造過濾器的插值網格的大小。對於最有效的行為,這應該是 2 加 1 的冪(例如,129、257 等)。默認值是不小於 numtaps 的 2 的最小冪的 1。 nfreqs 必須大於 numtaps。
- window: string or (string, float) or float, or None, 可選
要使用的窗口函數。默認為“hamming”。有關可能值的完整列表,請參閱
scipy.signal.get_window
。如果為 None,則不應用窗口函數。- nyq: 浮點數,可選,已棄用
這就是奈奎斯特頻率。 freq 中的每個頻率必須介於 0 和 nyq 之間。默認值為 1。
- antisymmetric: 布爾型,可選
產生的脈衝響應是否對稱/反對稱。有關詳細信息,請參閱注釋。
- fs: 浮點數,可選
信號的采樣頻率。每個頻率在隔斷必須介於 0 和
fs/2
.默認值為 2。
- taps: ndarray
FIR 濾波器的濾波器係數,作為長度為 numtaps 的一維數組。
參數 ::
返回 ::
注意:
根據給定的一組頻率和增益,在頻域中構建所需的響應。將逆 FFT 應用於所需的響應以創建相關的卷積核,並返回該核的第一個 numtaps 係數,按窗口縮放。
FIR 濾波器將具有線性相位。過濾器的類型由“numtaps”的值和反對稱標誌決定。有四種可能的組合:
odd numtaps, antisymmetric is False, type I filter is produced
even numtaps, antisymmetric is False, type II filter is produced
odd numtaps, antisymmetric is True, type III filter is produced
even numtaps, antisymmetric is True, type IV filter is produced
除了 I 型濾波器之外,所有濾波器的幅度響應均受以下約束:
type II - zero at the Nyquist frequency
type III - zero at zero and Nyquist frequencies
type IV - zero at zero frequency
參考:
[1]Oppenheim, A. V. 和 Schafer, R. W.,“Discrete-Time 信號處理”,Prentice-Hall,新澤西州恩格爾伍德懸崖 (1989)。 (例如,參見第 7.4 節。)
[2]Smith, Steven W.,“科學家和工程師的數字信號處理指南”,第 1 章。 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]
相關用法
- Python SciPy signal.firwin用法及代碼示例
- Python SciPy signal.firls用法及代碼示例
- Python SciPy signal.find_peaks用法及代碼示例
- Python SciPy signal.filtfilt用法及代碼示例
- Python SciPy signal.findfreqs用法及代碼示例
- Python SciPy signal.find_peaks_cwt用法及代碼示例
- Python SciPy signal.freqs用法及代碼示例
- Python SciPy signal.freqs_zpk用法及代碼示例
- Python SciPy signal.freqz用法及代碼示例
- Python SciPy signal.freqresp用法及代碼示例
- Python SciPy signal.fftconvolve用法及代碼示例
- Python SciPy signal.freqz_zpk用法及代碼示例
- Python SciPy signal.czt_points用法及代碼示例
- Python SciPy signal.chirp用法及代碼示例
- Python SciPy signal.residue用法及代碼示例
- Python SciPy signal.iirdesign用法及代碼示例
- Python SciPy signal.max_len_seq用法及代碼示例
- Python SciPy signal.kaiser_atten用法及代碼示例
- Python SciPy signal.oaconvolve用法及代碼示例
- Python SciPy signal.hilbert用法及代碼示例
- Python SciPy signal.ricker用法及代碼示例
- Python SciPy signal.group_delay用法及代碼示例
- Python SciPy signal.cheb2ord用法及代碼示例
- Python SciPy signal.get_window用法及代碼示例
- Python SciPy signal.lfilter用法及代碼示例
注:本文由純淨天空篩選整理自scipy.org大神的英文原創作品 scipy.signal.firwin2。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。