在數(shù)字信號(hào)處理領(lǐng)域中,數(shù)字濾波器占有非常重要的地位。根據(jù)其計(jì)算方式可以分為FIR(有限脈沖響應(yīng))濾波器,和IIR(無限脈沖響應(yīng))濾波器兩種。
FIR濾波器根據(jù)如下公式進(jìn)行計(jì)算:
y[m] = b[0]x[m] + b[1]x[m-1] + …. + b[p]x[m-p]
IIR濾波器:
y[m] = b[0]x[m] + b[1]x[m-1] + …. + b[p]x[m-p]
-a[1]y[m-1] – a2y[m-2]- … - a[Q]y[m-Q]
FIR濾波器:時(shí)刻m的輸出y[m]由時(shí)刻m的輸入x[m]以及之前的輸入x[m-1] ... x[m-P]和濾波器的系數(shù)b[0] ... b[P]求乘積和.
IIR濾波器再減去之前的輸出y[m-1] ... y[m-Q]和系數(shù)a[1] ... a[m-Q]的乘積和.
FIR濾波器是IIR濾波器的一種特殊情況.
濾波器的作用:改變信號(hào)頻譜,實(shí)現(xiàn)頻域?yàn)V波。
低通濾波器參數(shù)特征:
比如,設(shè)計(jì)一個(gè)歸一化為0.2通帶的低通濾波器,其頻譜響應(yīng)為:
生成一個(gè)隨機(jī)信號(hào)將其作為輸入經(jīng)過上述濾波器,結(jié)果如下,藍(lán)線是隨機(jī)信號(hào)的頻譜,橙線為經(jīng)過濾波器后的頻譜。
再比如一個(gè)雙音信號(hào),經(jīng)過該濾波器,輸入信號(hào)頻譜:
經(jīng)過濾波器濾波后的頻譜:
數(shù)字濾波器的設(shè)計(jì),最常用的是MATLAB的 filterDesigner工具根據(jù)需求直接配置參數(shù),即可生成濾波器系數(shù),同時(shí)給出濾波器的頻譜響應(yīng),使用特別方便:
使用python的話可以用scipy庫的signal.remez函數(shù):
import scipy.signal as signal
signal.remez(numtaps, bands, desired,
weight=None, Hz=1, type='bandpass', maxiter=25, grid_density=16)
其中:
numtaps : 所設(shè)計(jì)的FIR濾波器的長度
bands :一個(gè)遞增序列,它包括頻率響應(yīng)中的所有頻帶的邊界,其值在0到Hz/2之間,如果參數(shù)Hz為缺省值1的話,那么可以把它當(dāng)作是以取樣頻率正規(guī)化的頻率
desired : 長度為bands的一半的增益序列,它給出頻率響應(yīng)在bands中的每個(gè)頻帶的增益值
weight : 長度和desired一樣的權(quán)重序列,它給出desired中的每個(gè)增益所占的權(quán)重,即給出desired中的每個(gè)增益的重要性,值越大表示其越重要
type : 'bandpass'或者'differentiator'
比如設(shè)計(jì)一個(gè)歸一化為0.1的低通濾波器,截止頻率0.11,系數(shù)長度701的濾波器:
len_h=701
bands = np.array([0., 0.1, .11, .5])
h = signal.remez(len_h, bands, [1,0], [100,1])
濾波器的頻譜響應(yīng)為:
-
濾波器
+關(guān)注
關(guān)注
160文章
7703瀏覽量
177476 -
數(shù)字濾波器
+關(guān)注
關(guān)注
4文章
267瀏覽量
46968 -
數(shù)字信號(hào)處理
+關(guān)注
關(guān)注
15文章
553瀏覽量
45762 -
FIR
+關(guān)注
關(guān)注
4文章
146瀏覽量
33069 -
IIR
+關(guān)注
關(guān)注
1文章
61瀏覽量
22812
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論