一、實(shí)驗背景
數(shù)字濾波器是DSP中非常重要的組成部分。濾波器有兩種用途:分離混合的信號,復(fù)原失真的信號。在基頻分析器中,伴奏是對人聲的一種噪音干擾,因此需要盡可能減少噪音的影響。由于人的音高在300Hz~2000Hz之間,因此可以構(gòu)造一個帶通濾波器去除這個頻段以外的信號。在常見的濾波器中,由于切比雪夫濾波器運(yùn)算性能較好,且工作在頻域上,因此最適合應(yīng)用在基頻分析器中。
二、實(shí)驗?zāi)康?br />分析切比雪夫濾波器的特性,并完成切比雪夫系數(shù)的設(shè)計。
三、實(shí)驗環(huán)境和工具
實(shí)驗平臺:Windows
開發(fā)語言:Fortran
四、常見濾波器的分類和切比雪夫濾波器的選擇
根據(jù)應(yīng)用場合和實(shí)現(xiàn)方式,常見濾波器可以如表1所示來進(jìn)行分類:
卷積 |
遞歸 | |
時域 |
移動平均濾波器 |
單極點(diǎn)濾波器 |
頻域 |
加窗sinc濾波器 |
切比雪夫濾波器 |
任意頻響 |
FIR任意頻響濾波器 |
迭代設(shè)計濾波器 |
表1 常見濾波器的分類
根據(jù)表1,由于基頻的分析提取是工作在頻域上的,因此濾波器主要在加窗sinc濾波器和切比雪夫濾波器兩者間進(jìn)行選擇。根據(jù)系統(tǒng)的需求,為了實(shí)現(xiàn)快速獲取基頻分析結(jié)果,選擇的標(biāo)準(zhǔn)主要取決于兩者在速度上的優(yōu)劣。
對加窗sinc和切比雪夫濾波器的速度的比較,即是對卷積濾波器(FIR)和遞歸濾波器(IIR)的比較。圖1的曲線展示了加窗sinc濾波器和等效的6極點(diǎn)遞歸濾波器的相應(yīng)執(zhí)行時間。其中,標(biāo)準(zhǔn)卷積和快速傅里葉卷積是兩種算法下構(gòu)造的加窗sinc濾波器。加窗sinc濾波器的運(yùn)行時間在低頻和高頻段上升,這是因為為了跟上遞歸濾波器在這些效率上更好的性能,必須增加濾波器內(nèi)核的長度?偟膩碚f,IIR濾波器要比相應(yīng)的FIR濾波器快1個數(shù)量級。
圖1 FIR濾波器和IIR濾波器的速度對比
五、切比雪夫濾波器的特性分析
切比雪夫濾波器(又譯車比雪夫濾波器)是在通帶或阻帶上頻率響應(yīng)幅度等波紋波動的濾波器。在通帶波動的為“I型切比雪夫濾波器”,在阻帶波動的為“II型切比雪夫濾波器”。
1. 切比雪夫的頻率響應(yīng)特性
切比雪夫的頻率響應(yīng)如圖2所示:
(a) 低通頻率響應(yīng)
(b) 低通頻率響應(yīng)(dB)
(c) 高通頻率響應(yīng)
(d) 高通頻率響應(yīng)(dB)
圖2 切比雪夫頻率響應(yīng)
如圖1所示,圖a和圖b是0.5%紋波的低通切比雪夫濾波器的頻率響應(yīng),圖c和圖d是相應(yīng)的高通濾波器的響應(yīng)。
2. 階躍響應(yīng)的過沖
切比雪夫濾波器的階躍響應(yīng)有5%~30%的過沖,且隨著極點(diǎn)數(shù)的增加而增大。圖3是切比雪夫濾波器階躍響應(yīng)的兩個例子。
圖3 切比雪夫階躍響應(yīng)
3. 穩(wěn)定性
遞歸濾波器運(yùn)行很快,但在性能上受限。如果是低通高通濾波器,極點(diǎn)實(shí)際的數(shù)量將略微取決于紋波。單精度的近似數(shù)字如表2所示。
截止效率 |
0.02 |
0.05 |
0.10 |
0.25 |
0.40 |
045 |
0.48 |
最大極點(diǎn)數(shù) |
4 |
6 |
10 |
20 |
10 |
6 |
4 |
當(dāng)接近這一極限時,濾波器的性能將變差。階躍響應(yīng)將出現(xiàn)更大的過沖,阻帶衰減將變差,頻率響應(yīng)將出現(xiàn)過多紋波。如果濾波器的設(shè)計指針太高,或系數(shù)中出現(xiàn)了錯誤,輸出可能振蕩直至有溢出發(fā)生。
為了增加極點(diǎn)的最大數(shù)目,以提高運(yùn)算結(jié)果的準(zhǔn)確性,可以采用分階段實(shí)現(xiàn)濾波器,在本系統(tǒng)的基頻分析模塊中,我們將濾波器分為9級。如果每一級產(chǎn)生n個極點(diǎn),則該濾波器將會產(chǎn)生9*n個極點(diǎn)的濾波器。
六、 切比雪夫濾波器的設(shè)計
遞歸濾波器是由差分方程描述的。
(1)
其中,x[]和y[]分別是輸入和輸出信號,a和b是遞歸系數(shù)?梢詫懗上旅娴男问剑
(2)
濾波器的設(shè)計關(guān)鍵就在于a和b系數(shù)的獲取。
遞歸系數(shù)可以使用下面的Fortran程序來獲得:
1: 100 'CHEBYSHEV FILTER- RECURSION COEFFICIENT CALCULATION
2:
3: 110 '
4:
5: 120 'INITIALIZE VARIABLES
6:
7: 130 DIM A[22] 'holds the "a" coefficients upon program completion
8:
9: 140 DIM B[22] 'holds the "b" coefficients upon program completion
10:
11: 150 DIM TA[22] 'internal use for combining stages
12:
13: 160 DIM TB[22] 'internal use for combining stages
14:
15: 170 '
16:
17: 180 FOR I% = 0 TO 22
18:
19: 190 A[I%] = 0
20:
21: 200 B[I%] = 0
22:
23: 210 NEXT I%
24:
25: 220 '
26:
27: 230 A[2] = 1
28:
29: 240 B[2] = 1
30:
31: 250 PI = 3.14159265
32:
33: 260 'ENTER THE FOUR FILTER PARAMETERS
34:
35: 270 INPUT "Enter cutoff frequency (0 to .5): ", FC
36:
37: 280 INPUT "Enter 0 for LP, 1 for HP filter: ", LH
38:
39: 290 INPUT "Enter percent ripple (0 to 29): ", PR
40:
41: 300 INPUT "Enter number of poles (2,4,...20): ", NP
42:
43: 310 '
44:
45: 320 FOR P% = 1 TO NP/2 'LOOP FOR EACH POLE-PAIR
46:
47: 330 '
48:
49: 340 GOSUB 1000 'The subroutine in TABLE 20-5
50:
51: 350 '
52:
53: 360 FOR I% = 0 TO 22 'Add coefficients to the cascade
54:
55: 370 TA[I%] = A[I%]
56:
57: 380 TB[I%] = B[I%]
58:
59: 390 NEXT I%
60:
61: 400 '
62:
63: 410 FOR I% = 2 TO 22
64:
65: 420 A[I%] = A0*TA[I%] + A1*TA[I%-1] + A2*TA[I%-2]
66:
67: 430 B[I%] = TB[I%] - B1*TB[I%-1] - B2*TB[I%-2]
68:
69: 440 NEXT I%
70:
71: 450 '
72:
73: 460 NEXT P%
74:
75: 470 '
76:
77: 480 B[2] = 0 'Finish combining coefficients
78:
79: 490 FOR I% = 0 TO 20
80:
81: 500 A[I%] = A[I%+2]
82:
83: 510 B[I%] = -B[I%+2]
84:
85: 520 NEXT I%
86:
87: 530 '
88:
89: 540 SA = 0 'NORMALIZE THE GAIN
90:
91: 550 SB = 0
92:
93: 560 FOR I% = 0 TO 20
94:
95: 570 IF LH = 0 THEN SA = SA + A[I%]
96:
97: 580 IF LH = 0 THEN SB = SB + B[I%]
98:
99: 590 IF LH = 1 THEN SA = SA + A[I%] * (-1)^I%
100:
101: 600 IF LH = 1 THEN SB = SB + B[I%] * (-1)^I%
102:
103: 610 NEXT I%
104:
105: 620 '
106:
107: 630 GAIN = SA / (1 - SB)
108:
109: 640 '
110:
111: 650 FOR I% = 0 TO 20
112:
113: 660 A[I%] = A[I%] / GAIN
114:
115: 670 NEXT I%
116:
117: 680 ' 'The final recursion coefficients are in A[ ] and B[ ]
118:
119: 690 END
第270~300行,4個參數(shù)被輸入到程序中。截止頻率FC,被表達(dá)為抽樣頻率的分?jǐn)?shù)形式,因此必須在0到0.5的范圍內(nèi)。變量LH,設(shè)置為1時對應(yīng)高通濾波器,設(shè)置為0時對應(yīng)低通濾波器。變量PR的輸入值要在0到29之間,表示濾波器頻率響應(yīng)的紋波在0%到29%之間。濾波器的極點(diǎn)數(shù)通過變量NP輸入,且必須是2到20見的一個偶數(shù)。程序運(yùn)行完成時,a和b系數(shù)存放在數(shù)組A[]和B[]中(a0 = A[0],a[1] = A[1],等等)。
上面的程序只能用于獲取高通或低通濾波器的系數(shù),對于帶通濾波器,則需要再進(jìn)一步進(jìn)行構(gòu)造。在DSP系統(tǒng)中,帶通濾波器可通過低通濾波器和高通濾波器級聯(lián)而形成,如圖4所示。
圖4 級聯(lián)構(gòu)成的帶通濾波器
圖4所示的帶通濾波器由一個低通濾波器和一個高通濾波器串聯(lián)而成。設(shè)兩個濾波器的系數(shù)分別為a0、a1、a2、b1、b2和A0、A1、A2、B1、B2,則整個系統(tǒng)的傳遞函數(shù)H[z]由兩級傳遞函數(shù)相乘得到
(3)
進(jìn)行多項式相乘和合并同類項后得到下面的形式
(4)
公式(4)符合公式(2)的形式,因此我們可以直接提取實(shí)現(xiàn)串聯(lián)系統(tǒng)的遞歸系數(shù)
上面的計算過程可以交由計算機(jī)程序來實(shí)現(xiàn)。如下所示:
1: 100 'COMBINING RECURSION COEFFICIENTS OF CASCADE AND PARALLEL STAGES
2:
3: 110 '
4:
5: 120 ' 'INITIALIZE VARIABLES
6:
7: 130 DIM A1[8], B1[8] 'a and b coefficients for system 1, one of the stages
8:
9: 140 DIM A2[8], B2[8] 'a and b coefficients for system 2, one of the stages
10:
11: 150 DIM A3[16], B3[16] 'a and b coefficients for system 3, the combined system
12:
13: 160 '
14:
15: 170 'Indicate cascade or parallel combination
16:
17: 180 INPUT "Enter 0 for cascade, 1 for parallel: ", CP%
18:
19: 190 '
20:
21: 200 GOSUB XXXX 'Mythical subroutine to load: A1[ ], B1[ ], A2[ ], B2[ ]
22:
23: 210 '
24:
25: 220 FOR I% = 0 TO 8 'Convert the recursion coefficients into transfer functions
26:
27: 230 B2[I%] = -B2[I%]
28:
29: 240 B1[I%] = -B1[I%]
30:
31: 250 NEXT I%
32:
33: 260 B1[0] = 1
34:
35: 270 B2[0] = 1
36:
37: 280 '
38:
39: 290 FOR I% = 0 TO 16 'Multiply the polynomials by convolving
40:
41: 300 A3[I%] = 0
42:
43: 310 B3[I%] = 0
44:
45: 320 FOR J% = 0 TO 8
46:
47: 330 IF I%-J% < 0 OR I%-J% > 8 THEN GOTO 370
48:
49: 340 IF CP% = 0 THEN A3[I%] = A3[I%] + A1[J%] * A2[I%-J%]
50:
51: 350 IF CP% = 1 THEN A3[I%] = A3[I%] + A1[J%] * B2[I%-J%] + A2[J%] * B1[I%-J%]
52:
53: 360 B3[I%] = B3[I%] + B1[J%] * B2[I%-J%]
54:
55: 370 NEXT J%
56:
57: 380 NEXT I%
58:
59: 390 '
60:
61: 400 FOR I% = 0 TO 16 'Convert the transfer function into recursion coefficients.
62:
63: 410 B3[I%] = -B3[I%]
64:
65: 420 NEXT I%
66:
67: 430 B3[0] = 0
68:
69: 440 ' 'The recursion coefficients of the combined system now
70:
71: 450 END 'reside in A3[ ] & B3[ ]
在本系統(tǒng)中,選用44100的采樣頻率,高通頻率為30Hz,低通頻率為2Khz,為了獲得更快滾降特性,選用4%的紋波。使用上面的程序獲得a、b系數(shù)如下:
A |
B | |
0 |
9.684457e-07 |
0 |
1 |
6.779120e-06 |
-7.616874e+00 |
2 |
1.936891e-05 |
2.634041e+01 |
3 |
2.711648e-05 |
-5.424242e+01 |
4 |
1.355824e-05 |
7.325881e+01 |
5 |
-1.355824e-05 |
-6.726091e+01 |
6 |
-2.711648e-05 |
4.196424e+01 |
7 |
-1.936891e-05 |
-1.715111e+01 |
8 |
-6.779120e-06 |
4.166027e+00 |
9 |
-9.684457e-07 |
-4.581673e-01 |
七、實(shí)驗總結(jié)
通過本實(shí)驗,我們深入了解了切比雪夫濾波器的特性,并成功構(gòu)造了一個4%紋波的切比雪夫帶通濾波器,以提高基頻提取結(jié)果的正確性。
出處:http://www.cnblogs.com/weizhoupan/archive/2011/03/26/1996500.html