本文簡要介紹 python 語言中 scipy.signal.firwin
的用法。
用法:
scipy.signal.firwin(numtaps, cutoff, *, width=None, window='hamming', pass_zero=True, scale=True, nyq=<object object>, fs=None)#
使用窗口方法設計 FIR 濾波器。
該函數計算有限脈衝響應濾波器的係數。濾波器將具有線性相位;如果 numtaps 為奇數則為 Type I,如果 numtaps 為偶數則為 Type II。
II 型濾波器在奈奎斯特頻率處始終具有零響應,因此如果使用 numtaps 偶數調用 firwin 並且具有右端位於奈奎斯特頻率的通帶,則會引發 ValueError 異常。
- numtaps: int
濾波器的長度(係數的數量,即濾波器階數 + 1)。如果通帶包括奈奎斯特頻率,則 numtaps 必須是奇數。
- cutoff: 浮點數或一維 數組
濾波器的截止頻率(以與 fs 相同的單位表示)或一組截止頻率(即頻帶邊)。在後一種情況下,截止頻率應該是正的,並且在 0 和 fs/2 之間單調增加。值 0 和 fs/2 不得包含在截止值中。
- width: 浮點數或無,可選
如果 width 不是 None,則假定它是用於 Kaiser FIR 濾波器設計的過渡區域的近似寬度(以與 fs 相同的單位表示)。在這種情況下,window 參數將被忽略。
- window: 字符串或字符串和參數值的元組,可選
想要使用的窗口。有關窗口和所需參數的列表,請參見
scipy.signal.get_window
。- pass_zero: {真,假,‘bandpass’, ‘lowpass’, ‘highpass’, ‘bandstop’},可選
如果為 True,則頻率 0(即 “DC gain”)處的增益為 1。如果為 False,則直流增益為 0。也可以是所需濾波器類型的字符串參數(相當於 IIR 設計函數中的
btype
)。- scale: 布爾型,可選
設置為 True 以縮放係數,以便頻率響應在某個頻率處完全一致。該頻率是:
0 (DC) 如果第一個通帶從 0 開始(即 pass_zero 為真)
fs/2(奈奎斯特頻率),如果第一個通帶以 fs/2 結束(即濾波器是單頻帶高通濾波器);否則為第一通帶中心
- nyq: 浮點數,可選,已棄用
這就是奈奎斯特頻率。每個截止頻率必須在 0 和 nyq 之間。默認值為 1。
- fs: 浮點數,可選
信號的采樣頻率。每個頻率在隔斷必須介於 0 和
fs/2
。默認值為 2。
- h: (numtaps,) ndarray
長度係數 numtaps FIR 濾波器。
- ValueError
如果有任何值隔斷小於或等於 0 或大於或等於
fs/2
,如果值在隔斷不是嚴格單調遞增的,或者如果小數點是偶數,但通帶包括奈奎斯特頻率。
參數 ::
返回 ::
拋出 ::
例子:
Low-pass 從 0 到 f:
>>> from scipy import signal >>> numtaps = 3 >>> f = 0.1 >>> signal.firwin(numtaps, f) array([ 0.06799017, 0.86401967, 0.06799017])
使用特定的窗口函數:
>>> signal.firwin(numtaps, f, window='nuttall') array([ 3.56607041e-04, 9.99286786e-01, 3.56607041e-04])
High-pass(‘stop’ 從 0 到 f):
>>> signal.firwin(numtaps, f, pass_zero=False) array([-0.00859313, 0.98281375, -0.00859313])
Band-pass:
>>> f1, f2 = 0.1, 0.2 >>> signal.firwin(numtaps, [f1, f2], pass_zero=False) array([ 0.06301614, 0.88770441, 0.06301614])
Band-stop:
>>> signal.firwin(numtaps, [f1, f2]) array([-0.00801395, 1.0160279 , -0.00801395])
多頻段(通帶為 [0, f1]、[f2, f3] 和 [f4, 1]):
>>> f3, f4 = 0.3, 0.4 >>> signal.firwin(numtaps, [f1, f2, f3, f4]) array([-0.01376344, 1.02752689, -0.01376344])
多頻段(通帶為 [f1, f2] 和 [f3,f4]):
>>> signal.firwin(numtaps, [f1, f2, f3, f4], pass_zero=False) array([ 0.04890915, 0.91284326, 0.04890915])
相關用法
- Python SciPy signal.firwin2用法及代碼示例
- 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.firwin。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。