姜恩華,李素文,周建芳
(淮北師范大學(xué) 物理與電子信息學(xué)院,安徽 淮北 235000)
數(shù)字信號處理教材中常常把IIR數(shù)字濾波器設(shè)計(jì)與數(shù)字濾波網(wǎng)絡(luò)基本結(jié)構(gòu)的內(nèi)容編寫在不同章節(jié)進(jìn)行講解,這樣導(dǎo)致關(guān)于IIR數(shù)字濾波器的知識點(diǎn)比較分散[1-2],不利于學(xué)生系統(tǒng)掌握IIR數(shù)字濾波網(wǎng)絡(luò)方面的知識.如何有效開展IIR濾波器設(shè)計(jì)與數(shù)字濾波網(wǎng)絡(luò)結(jié)構(gòu)內(nèi)容的課堂教學(xué),是一個值得研究的問題[3].
IIR數(shù)字濾波器通常采用系統(tǒng)函數(shù)H(z)描述,通過系統(tǒng)函數(shù)H(z)或線性常系數(shù)差分方程能夠得到 IIR直接型數(shù)字濾波網(wǎng)絡(luò)結(jié)構(gòu).系統(tǒng)函數(shù)H(z)一般是關(guān)于z的分式,由分子多項(xiàng)式和分母多項(xiàng)式組成.采用因式分解法,把系統(tǒng)函數(shù)H(z)分解為若干個一階或二階分式相乘的形式,求得IIR數(shù)字濾波網(wǎng)絡(luò)的級聯(lián)型結(jié)構(gòu);采用部分分式展開法,把系統(tǒng)函數(shù)H(z)分解為若干個一階或二階分式相加的形式,求得IIR數(shù)字濾波網(wǎng)絡(luò)的并聯(lián)型結(jié)構(gòu).Matlab軟件提供了直接型轉(zhuǎn)換為級聯(lián)型的函數(shù)tf2sos[2],文獻(xiàn)[4]提供了直接型轉(zhuǎn)換為并聯(lián)型的函數(shù)tf2par.借助Matlab函數(shù),能夠求得IIR數(shù)字濾波器的級聯(lián)型和并聯(lián)型結(jié)構(gòu).
應(yīng)用Matlab軟件,以IIR數(shù)字濾波器設(shè)計(jì)和數(shù)字濾波網(wǎng)絡(luò)為線索,通過IIR基本網(wǎng)絡(luò)結(jié)構(gòu)完成濾波,使得IIR數(shù)字濾波器的設(shè)計(jì)和數(shù)字濾波過程形成一個有機(jī)的整體.
通過系統(tǒng)函數(shù)H(z)描述IIR數(shù)字濾波器,通過傳輸函數(shù)H(ejω)描述IIR數(shù)字濾波器幅頻特性,通過幅頻特性曲線很容易看出IIR數(shù)字濾波器是低通、高通、帶通和帶阻濾波器.系統(tǒng)函數(shù)H(z)和傳輸函數(shù)H(ejω)的關(guān)系為:
H(ejω)=H(z)|z=ejω.
(1)
對式(1)兩邊取絕對值
|H(ejω)|=|H(z)|z=ejω.
(2)
在數(shù)字域頻率ω的一個周期[-π,π]內(nèi),取ω=0和ω=π兩點(diǎn),計(jì)算出z1=ej0=1和z2=ejπ=-1,代入式(2),根據(jù)計(jì)算出的|H(z)|值,可以判斷IIR數(shù)字濾波器的類型[1-2,5].
在數(shù)字信號處理教材中,主要講解的IIR數(shù)字濾波器設(shè)計(jì)方法為脈沖響應(yīng)不變法、雙線性變換法和直接設(shè)計(jì)方法.采用脈沖響應(yīng)不變法和雙線性變換法設(shè)計(jì)IIR數(shù)字濾波器的步驟為:①通過頻率變換,把IIR數(shù)字濾波器的邊界頻率變換為模擬濾波器的通帶和阻帶邊界截止頻率;②通過選擇合適的原型模擬濾波器,設(shè)計(jì)出需要的模擬濾波器,求得其系統(tǒng)函數(shù)Ha(s);③通過脈沖響應(yīng)不變法和雙線性變換法把Ha(s)轉(zhuǎn)化為H(z)[2,6];④采用直接設(shè)計(jì)方法設(shè)計(jì)IIR數(shù)字濾波器,根據(jù)IIR數(shù)字濾波器的技術(shù)指標(biāo),調(diào)用Matlab函數(shù),求得IIR數(shù)字濾波器的系統(tǒng)函數(shù)H(z).
在Matlab軟件中,提供了脈沖響應(yīng)不變法、雙線性變換法和直接設(shè)計(jì)方法的設(shè)計(jì)函數(shù),借助設(shè)計(jì)函數(shù),可以設(shè)計(jì)IIR數(shù)字濾波器.
IIR數(shù)字濾波網(wǎng)絡(luò)基本結(jié)構(gòu),主要分為直接型、級聯(lián)型和并聯(lián)型結(jié)構(gòu).通過IIR數(shù)字濾波網(wǎng)絡(luò)的線性常系數(shù)差分方程,求得IIR數(shù)字濾波網(wǎng)絡(luò)的直接型結(jié)構(gòu).對線性常系數(shù)差分方程進(jìn)行雙邊Z變換,求得系統(tǒng)函數(shù)H(z).通過對系統(tǒng)函數(shù)H(z)進(jìn)行因式分解,求得IIR數(shù)字濾波網(wǎng)絡(luò)的級聯(lián)型結(jié)構(gòu).通過對系統(tǒng)函數(shù)H(z)進(jìn)行部分分式展開,求得IIR數(shù)字濾波網(wǎng)絡(luò)的并聯(lián)型結(jié)構(gòu)[1-2,5].
若IIR數(shù)字濾波器的系統(tǒng)函數(shù)H(z)如式(3)所示,求得IIR直接型數(shù)字濾波網(wǎng)絡(luò)結(jié)構(gòu)[1,2,5],如圖1所示.
(3)
圖1 IIR網(wǎng)絡(luò)的直接型濾波結(jié)構(gòu)
以直接型低通濾波網(wǎng)絡(luò)為例,已知IIR數(shù)字低通濾波器的技術(shù)參數(shù)為:通帶截止頻率ωp,阻帶截止頻率ωs,通帶最大衰減αp,阻帶最小衰減αs.采用脈沖響應(yīng)不變法設(shè)計(jì)步驟為:①把數(shù)字域頻率變換為模擬域頻率;②選擇原型模擬濾波器,進(jìn)行模擬濾波器設(shè)計(jì),得到模擬濾波器的系統(tǒng)函數(shù)Ha(s);③對系統(tǒng)函數(shù)Ha(s)進(jìn)行拉氏逆變換得到單位沖激響應(yīng)h(t);④對h(t)進(jìn)行時域采樣,得到單位采樣序列h(n);⑤對h(n)進(jìn)行Z變換,求得該IIR數(shù)字濾波器的系統(tǒng)函數(shù)H(z).由于時域采樣一定要滿足時域采樣定理,即在ω=π處為IIR數(shù)字濾波器的阻帶.由于IIR數(shù)字高通和帶阻濾波器在ω=π處為通帶,所以脈沖響應(yīng)不變法不適合設(shè)計(jì)IIR數(shù)字高通和帶阻濾波器,只適合設(shè)計(jì)低通和帶通濾波器[1-2,7].
借助Matlab軟件,假設(shè)模擬濾波器采用巴特沃斯低通模擬濾波器,首先進(jìn)行頻率變換,其次調(diào)用Matlab函數(shù)[N,wc]=buttord(wp,ws,rp,rs′,s'),求得模擬濾波器的階數(shù)N和通帶截止頻率ωc;再次調(diào)用Matlab函數(shù)[B,A]=butter(N,wc′,s'),求得模擬濾波器的系統(tǒng)函數(shù)Ha(s)的分子和分母多項(xiàng)式系數(shù)B和A;最后調(diào)用Matlab函數(shù)[Bz,Az]=impinvar(B,A,Fs),求得IIR數(shù)字濾波器的系統(tǒng)函數(shù)H(z)分子和分母多項(xiàng)式系數(shù)Bz和Az[6,8].設(shè)計(jì)的巴特沃斯模擬低通濾波器和IIR數(shù)字低通濾波器的損耗函數(shù)如圖2所示.
圖2 模擬和數(shù)字低通濾波器的損耗函數(shù)
圖3 直接型IIR濾波網(wǎng)絡(luò)輸入和輸出信號及其頻譜
按照式(4)設(shè)計(jì)輸入序列x(n),借助Matlab函數(shù)y(n)=filter(Bz,Az,x),對輸入序列x(n)進(jìn)行直接型數(shù)字低通濾波,濾除其高頻成分,低頻成分即為直接型數(shù)字低通濾波網(wǎng)絡(luò)的輸出y(n).x(n)和y(n)的時域波形與頻譜如圖3所示.
x(n)=20*sin(3.14*1/16*n)+
10*sin(3.14*10/32*n).
(4)
從圖3中的子圖(2)和(4)可以看出,輸入序列x(n)的低頻成分被保留,高頻成分被濾除.
對系統(tǒng)函數(shù)H(z)進(jìn)行因式分解,分解為若干個一階或二階分式相乘的形式,例如二階分式形式如式(5)所示.求得IIR數(shù)字濾波網(wǎng)絡(luò)的級聯(lián)型結(jié)構(gòu)[1-2,5],如圖4所示.
(5)
圖4 IIR網(wǎng)絡(luò)的級聯(lián)型濾波結(jié)構(gòu)
以IIR級聯(lián)型高通濾波網(wǎng)絡(luò)為例,采用雙線性變換法設(shè)計(jì)IIR高通濾波器,假設(shè)模擬濾波器采用巴特沃斯低通濾波器,雙線性變換法設(shè)計(jì)步驟為:①根據(jù)雙線性變換法的頻率變換關(guān)系,把IIR高通濾波器的技術(shù)指標(biāo)ωp和ωs變換為模擬高通濾波器的技術(shù)指標(biāo)Ωp和 Ωs,通帶最大衰減αp和阻帶最小衰減αs不變;②對模擬高通濾波器的邊界截止頻率Ωp和 Ωs歸一化,求得模擬低通濾波器的歸一化頻率λp和λs;③進(jìn)行巴特沃斯低通濾波器設(shè)計(jì),求得歸一化系統(tǒng)函數(shù)G(p),對G(p)去歸一化,求得模擬高通濾波器的系統(tǒng)函數(shù)Ha(s)的分子和分母多項(xiàng)式系數(shù)B和A;④調(diào)用Matlab函數(shù)[Bz,Az]=bilinear(B,A,Fs),將系統(tǒng)函數(shù)Ha(s)轉(zhuǎn)化為數(shù)字高通濾波器的系統(tǒng)函數(shù)H(z).設(shè)計(jì)的巴特沃斯模擬高通濾波器AF和數(shù)字高通濾波器DF的損耗函數(shù)曲線如圖5所示.
圖5 模擬和數(shù)字高通濾波器的損耗函數(shù)
根據(jù)系統(tǒng)函數(shù)H(z)分子和分母多項(xiàng)式系數(shù)Bz和Az,調(diào)用Matlab函數(shù)[s,g]=tf2sos(Bz,Az),把IIR數(shù)字高通濾波器的直接型結(jié)構(gòu)轉(zhuǎn)換為級聯(lián)型結(jié)構(gòu),按照式(4)設(shè)計(jì)輸入序列x(n),調(diào)用Matlab函數(shù)y(n)=filtfilt(s,g,x),對輸入序列x(n)進(jìn)行級聯(lián)型高通濾波,濾除其低頻成分,高頻成分即為級聯(lián)型數(shù)字高通濾波網(wǎng)絡(luò)的輸出y(n).x(n)和y(n)的時域波形和頻譜如圖6所示.
圖6 級聯(lián)型IIR濾波網(wǎng)絡(luò)的輸入和輸出時域信號及其頻譜
從圖6中的子圖(2)和(4)可以看出,輸入序列x(n)的高頻成分被保留,低頻成分被濾除.
對系統(tǒng)函數(shù)H(z)進(jìn)行部分分式展開,展開為若干個一階或二階分式相加的形式,如式(6)所示.求得IIR數(shù)字濾波網(wǎng)絡(luò)的并聯(lián)型結(jié)構(gòu)[1-2,5],如圖7所示.
(6)
以IIR并聯(lián)型數(shù)字帶通濾波網(wǎng)絡(luò)為例,采用直接設(shè)計(jì)方法,其設(shè)計(jì)步驟為:首先選擇濾波器類型,如巴特沃斯、切比雪夫1型和橢圓濾波器;其次根據(jù)數(shù)字帶通濾波器的技術(shù)指標(biāo),調(diào)用Matlab函數(shù),直接設(shè)計(jì)出相應(yīng)類型的濾波器.以數(shù)字橢圓濾波器為例,調(diào)用[N,wpo]=ellipord(wp,ws,rp,rs)計(jì)算數(shù)字橢圓濾波器的階數(shù)N和通帶截止頻率,調(diào)用[Bz,Az]=ellip(N,rp,rs,wpo)函數(shù),求得數(shù)字橢圓濾波器系統(tǒng)函數(shù)H(z)分子和分母多項(xiàng)式系數(shù)Bz和Az.設(shè)計(jì)的數(shù)字橢圓濾波器損耗函數(shù)曲線如圖8所示.
圖7 IIR網(wǎng)絡(luò)的并聯(lián)型濾波結(jié)構(gòu)
圖8 數(shù)字帶通濾波器損耗函數(shù)
圖9 并聯(lián)型IIR濾波網(wǎng)絡(luò)的輸入和輸出時域信號及其頻譜
根據(jù)文獻(xiàn)[4]提供的Matlab函數(shù):[C,B,A] = tf2par(Bz,Az),把數(shù)字橢圓濾波器的直接型網(wǎng)絡(luò)結(jié)構(gòu)轉(zhuǎn)換為并聯(lián)型網(wǎng)絡(luò)結(jié)構(gòu).根據(jù)式(7)設(shè)計(jì)輸入序列x(n),根據(jù)文獻(xiàn)[4]提供的并聯(lián)型網(wǎng)絡(luò)濾波函數(shù):y(n)= parfilt(C,B,A,x),對輸入序列x(n)進(jìn)行并聯(lián)型帶通濾波,濾除其高頻和低頻成分,帶通成分即為并聯(lián)型數(shù)字帶通濾波網(wǎng)絡(luò)的輸出y(n).x(n)和y(n)的時域波形和頻譜如圖9所示.
x(n)=20*sin(3.14*1/10*n)+
20*sin(3.14*3/10*n)+
20*sin(3.14*7/10*n).
(7)
從圖9中的子圖(2)和(4)可以看出,輸入序列x(n)的帶通成分被保留,高頻和低頻成分被濾除.
本文探索了借助Matlab軟件有效開展IIR數(shù)字濾波器和數(shù)字濾波網(wǎng)絡(luò)章節(jié)的課堂教學(xué).根據(jù)IIR數(shù)字濾波器的系統(tǒng)函數(shù)H(z),通過系統(tǒng)函數(shù)H(z)的因式分解法和部分分式展開法,求得IIR數(shù)字濾波器級聯(lián)型和并聯(lián)型濾波網(wǎng)絡(luò)結(jié)構(gòu).借助Matlab函數(shù),設(shè)計(jì)了IIR數(shù)字濾波器.設(shè)計(jì)了輸入序列,通過IIR數(shù)字濾波器的直接型、級聯(lián)型和并聯(lián)型濾波網(wǎng)絡(luò)對輸入序列濾波,形象地展現(xiàn)了IIR濾波器的設(shè)計(jì)和濾波過程.通過本文設(shè)計(jì)加深學(xué)生對IIR數(shù)字濾波器的設(shè)計(jì)方法和數(shù)字濾波網(wǎng)絡(luò)基本結(jié)構(gòu)的理解,起到較好的教學(xué)示范作用.