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


Python cusignal.filter_design.fir_filter_design.firwin用法及代碼示例

用法:

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 異常。

參數

numtapsint

濾波器的長度(係數的數量,即濾波器階數 + 1)。如果通帶包括奈奎斯特頻率,numtaps 必須是奇數。

cutofffloat 或 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])

相關用法


注:本文由純淨天空篩選整理自rapids.ai大神的英文原創作品 cusignal.filter_design.fir_filter_design.firwin。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。