用法:
cusignal.filter_design.fir_filter_design.firwin(numtaps, cutoff, width=None, window='hamming', pass_zero=True, scale=True, nyq=None, fs=None, gpupath=True)
使用窗口方法設計 FIR 濾波器。
該函數計算有限脈衝響應濾波器的係數。濾波器將具有線性相位;如果
numtaps
為奇數,則為 Type I,如果numtaps
為偶數,則為 Type II。II 型濾波器在奈奎斯特頻率處始終具有零響應,因此如果使用
numtaps
even 調用 firwin 並且具有右端處於奈奎斯特頻率的通帶,則會引發 ValueError 異常。- numtaps:int
濾波器的長度(係數的數量,即濾波器階數 + 1)。如果通帶包括奈奎斯特頻率,
numtaps
必須是奇數。- cutoff:float 或 1D 數組
濾波器的截止頻率(以與
fs
相同的單位表示)或截止頻率數組(即頻帶邊)。在後一種情況下,cutoff
中的頻率應該是正的並且在 0 和fs/2
之間單調遞增。值 0 和fs/2
不得包含在cutoff
中。- width:浮點數或無,可選
如果
width
不是 None,則假定它是用於 Kaiser FIR 濾波器設計的過渡區域的近似寬度(以與fs
相同的單位表示)。在這種情況下,window
參數將被忽略。- window:字符串或字符串和參數值的元組,可選
想要使用的窗口。有關窗口和所需參數的列表,請參見
cusignal.get_window
。- pass_zero:{對,錯,‘bandpass’, ‘lowpass’, ‘highpass’, ‘bandstop’},
可選 如果為真,則頻率 0(即“DC gain”)處的增益為 1。如果為假,則直流增益為 0。也可以是所需濾波器類型的字符串參數(相當於 IIR 設計函數中的
btype
)。1.3.0 版中的新函數:支持字符串參數。
- scale:布爾型,可選
設置為 True 以縮放係數,以便頻率響應在某個頻率處完全一致。該頻率是:
- 0 (DC) 如果第一個通帶從 0 開始(即 pass_zero 為真)
fs/2
(奈奎斯特頻率)如果第一個通帶結束於fs/2
(即濾波器是單頻帶高通濾波器);否則為第一通帶中心
- nyq:浮點數,可選
Deprecated. Use `fs` instead.
這是奈奎斯特頻率。cutoff
中的每個頻率必須介於 0 和nyq
之間。默認值為 1。- fs:浮點數,可選
信號的采樣頻率。
cutoff
中的每個頻率必須介於 0 和fs/2
之間。默認值為 2。- gpupath:布爾型,可選
濾波器設計的可選路徑。如果過濾器尺寸很小,gpupath == False 可能是可取的。
- h:(numtaps,) ndarray
長度係數
numtaps
FIR 濾波器。
- ValueError
如果
cutoff
中的任何值小於或等於 0 或大於或等於fs/2
,如果cutoff
中的值不是嚴格單調遞增的,或者如果numtaps
是偶數但通帶包括奈奎斯特頻率。
參數:
返回:
拋出:
例子:
Low-pass 從 0 到 f:
>>> import cusignal >>> numtaps = 3 >>> f = 0.1 >>> cusignal.firwin(numtaps, f) array([ 0.06799017, 0.86401967, 0.06799017])
使用特定的窗口函數:
>>> cusignal.firwin(numtaps, f, window='nuttall') array([ 3.56607041e-04, 9.99286786e-01, 3.56607041e-04])
High-pass(‘stop’ 從 0 到 f):
>>> cusignal.firwin(numtaps, f, pass_zero=False) array([-0.00859313, 0.98281375, -0.00859313])
Band-pass:
>>> f1, f2 = 0.1, 0.2 >>> cusignal.firwin(numtaps, [f1, f2], pass_zero=False) array([ 0.06301614, 0.88770441, 0.06301614])
Band-stop:
>>> cusignal.firwin(numtaps, [f1, f2]) array([-0.00801395, 1.0160279 , -0.00801395])
多頻段(通帶為 [0, f1]、[f2, f3] 和 [f4, 1]):
>>> f3, f4 = 0.3, 0.4 >>> cusignal.firwin(numtaps, [f1, f2, f3, f4]) array([-0.01376344, 1.02752689, -0.01376344])
多頻段(通帶為 [f1, f2] 和 [f3,f4]):
>>> cusignal.firwin(numtaps, [f1, f2, f3, f4], pass_zero=False) array([ 0.04890915, 0.91284326, 0.04890915])
相關用法
- Python cusignal.filter_design.fir_filter_design.cmplx_sort用法及代碼示例
- Python cusignal.filtering.resample.resample_poly用法及代碼示例
- Python cusignal.filtering.resample.resample用法及代碼示例
- Python cusignal.windows.windows.hann用法及代碼示例
- Python cusignal.windows.windows.general_gaussian用法及代碼示例
- Python cusignal.waveforms.waveforms.chirp用法及代碼示例
- Python cusignal.windows.windows.gaussian用法及代碼示例
- Python cusignal.windows.windows.hamming用法及代碼示例
- Python cusignal.windows.windows.get_window用法及代碼示例
- Python cusignal.waveforms.waveforms.gausspulse用法及代碼示例
- Python cusignal.peak_finding.peak_finding.argrelmin用法及代碼示例
- Python cusignal.windows.windows.bartlett用法及代碼示例
- Python cusignal.spectral_analysis.spectral.welch用法及代碼示例
- Python cusignal.windows.windows.chebwin用法及代碼示例
- Python cusignal.windows.windows.general_cosine用法及代碼示例
- Python cusignal.peak_finding.peak_finding.argrelextrema用法及代碼示例
- Python cusignal.convolution.convolve.convolve2d用法及代碼示例
- Python cusignal.convolution.correlate.correlate用法及代碼示例
- Python cusignal.convolution.convolve.fftconvolve用法及代碼示例
- Python cusignal.waveforms.waveforms.unit_impulse用法及代碼示例
注:本文由純淨天空篩選整理自rapids.ai大神的英文原創作品 cusignal.filter_design.fir_filter_design.firwin。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。