對(duì)濾波的總結(jié):對(duì)特定頻率進(jìn)行有效提取,并對(duì)提取部分進(jìn)行特定的處理(增益,衰減,濾除)的動(dòng)作被叫做濾波。
最常用的濾波器類(lèi)型有三種:通過(guò)式(Pass),擱架式(Shelving)和參量式(Parametric)。濾波器都有一個(gè)叫參考頻率(Reference Frequency)的東西,在不同類(lèi)型的濾波器中,具體的叫法會(huì)有所不同。
通過(guò)式濾波器可以讓參考頻率一側(cè)的頻率成分完全通過(guò)該濾波器,同時(shí)對(duì)另一側(cè)的頻率成分做線性的衰減,就是,一邊讓通過(guò),一邊逐漸被濾除。在信號(hào)學(xué)中,通過(guò)的區(qū)域被稱(chēng)為通帶,濾除的區(qū)域被叫做阻帶,在通過(guò)式濾波器中,參考頻率通常被稱(chēng)為截止頻率。

高通濾波器(high-pass filters):讓截止頻率后的高頻區(qū)域通過(guò),另一側(cè)濾除,低通濾波器(low-pass filters):讓截止頻率前的低頻區(qū)域通過(guò),另一側(cè)濾除,通
以下是高通濾波器與低通濾波器的核心參數(shù):

截止頻率(Cut-off frequency):決定了通帶(通過(guò)的頻率部分)與阻帶(阻止的頻率部分)的分界曲線,截止頻率的位置并非是在曲線開(kāi)始彎曲的那個(gè)點(diǎn),而是在-3dB的位置。以圖2左側(cè)的高通濾波器為例,截止頻率點(diǎn)之上的部分頻率并沒(méi)有全部被通過(guò),而是有個(gè)曲線,在曲線回歸平直后其頻率才被完全通過(guò)。至于為什么要將-3dB的位置設(shè)為截止頻率,是因?yàn)?3dB對(duì)于濾波器的設(shè)計(jì)而言是個(gè)非常重要的位置,如果設(shè)為其他位置,則會(huì)讓通過(guò)式濾波器的設(shè)計(jì)變得尤為復(fù)雜。
斜率(Slope):表示的是通帶與阻帶的分界曲線的傾斜程度,也就是說(shuō)斜率決定了分界曲線是偏向平緩的,還是偏向垂直的,斜率越大(更陡峭),人工處理的痕跡就越明顯。斜率的單位為dB/oct,中文稱(chēng)為分貝每倍頻程。雖然繞口,但其實(shí)很簡(jiǎn)單,如6dB/oct,意思為一個(gè)倍頻程的距離會(huì)產(chǎn)生6dB的衰減,數(shù)字濾波器常見(jiàn)的斜率選擇有6dB/oct,12dB/oct,18dB/oct,24dB/oct,30dB/oct等等(圖3)。
另外,倍頻程其實(shí)在P7中有提及到,在此再次說(shuō)明一下,在頻譜圖上,兩個(gè)音程關(guān)系為八度的音之間的頻率點(diǎn)的距離被稱(chēng)為倍頻程,如標(biāo)準(zhǔn)音A為440Hz,其相對(duì)高八度音的A(高音A)為880Hz,那么440Hz到880Hz就是一個(gè)倍頻程的關(guān)系。以上純概念的東西搞清楚了之后,我們?cè)倥e例說(shuō)說(shuō)斜率是怎樣影響音色的,如一個(gè)截止頻率為800hz的低通濾波器,斜率24dB/oct就會(huì)比6dB/oct的聲音更悶,因?yàn)?4dB/oct的斜率更加陡峭,高頻被濾除的更加干凈,所以聲音就更加悶(人工處理的痕跡就更明顯)。
scipy.signal濾波函數(shù)
scipy.signal.filtfilt(b, a, x, axis=-1, padtype='odd', padlen=None, method='pad', irlen=None)
輸入?yún)?shù):
- b: 濾波器的分子系數(shù)向量
- a: 濾波器的分母系數(shù)向量
- x: 要過(guò)濾的數(shù)據(jù)數(shù)組。(array型)
- axis: 指定要過(guò)濾的數(shù)據(jù)數(shù)組x的軸
- padtype: 必須是“奇數(shù)”、“偶數(shù)”、“常數(shù)”或“無(wú)”。這決定了用于過(guò)濾器應(yīng)用的填充信號(hào)的擴(kuò)展類(lèi)型。{‘odd’, ‘even’, ‘constant’, None}
- padlen:在應(yīng)用濾波器之前在軸兩端延伸X的元素?cái)?shù)目。此值必須小于要濾波元素個(gè)數(shù)- 1。(int型或None)
- method:確定處理信號(hào)邊緣的方法。當(dāng)method為“pad”時(shí),填充信號(hào);填充類(lèi)型padtype和padlen決定,irlen被忽略。當(dāng)method為“gust”時(shí),使用古斯塔夫森方法,而忽略padtype和padlen。{“pad” ,“gust”}
- irlen:當(dāng)method為“gust”時(shí),irlen指定濾波器的脈沖響應(yīng)的長(zhǎng)度。如果irlen是None,則脈沖響應(yīng)的任何部分都被忽略。對(duì)于長(zhǎng)信號(hào),指定irlen可以顯著改善濾波器的性能。(int型或None)
.濾波器構(gòu)造函數(shù)(僅介紹Butterworth濾波器)
scipy.signal.butter(N, Wn, btype='low', analog=False, output='ba')
輸入?yún)?shù):
- N:濾波器的階數(shù),就是指過(guò)濾諧波的次數(shù),一般來(lái)講,同樣的濾波器,其階數(shù)越高,濾波效果就越好,但是,階數(shù)越高,成本也就越高
- Wn:歸一化截止頻率。計(jì)算公式Wn=2截止頻率/采樣頻率。注意:根據(jù)采樣定理,采樣頻率要大于兩倍的信號(hào)本身最大的頻率,才能還原信號(hào)截止頻率一定小于信號(hào)本身最大的頻率,所以Wn一定在0和1之間)。當(dāng)構(gòu)造帶通濾波器或者帶阻濾波器時(shí),Wn為長(zhǎng)度為2的列表。
這里假設(shè)采樣頻率為1000hz,信號(hào)本身最大的頻率為500hz,要濾除10hz以下和400hz以上頻率成分,即截至頻率為10hz和400hz,則wn1=2*10/1000=0.02,wn2=2*400/1000=0.8。Wn=[0.02,0.8]
- btype : 濾波器類(lèi)型{‘lowpass’, ‘highpass’, ‘bandpass’, ‘bandstop’},
- output : 輸出類(lèi)型{‘ba’, ‘zpk’, ‘sos’},
輸出參數(shù):
- b,a: IIR濾波器的分子(b)和分母(a)多項(xiàng)式系數(shù)向量。output='ba'
- z,p,k: IIR濾波器傳遞函數(shù)的零點(diǎn)、極點(diǎn)和系統(tǒng)增益. output= 'zpk'
- sos: IIR濾波器的二階截面表示。output= 'sos'
b, a = signal.butter(5, 4*2/30, 'low')
#b, a = signal.butter(5, [0.2*2/20, 5*2/20], "bandpass")
data = signal.lfilter(b, a, data_csi)