方 焯 陳西曲 陳良艷 黃海林
(武漢輕工大學,湖北 武漢 430023)
自從1965 年庫利和圖基發(fā)表了快速傅里葉變換算法以來,數(shù)字信號處理這一學科蓬勃發(fā)展,逐漸成為一門涉及許多學科而廣泛引用于許多領域的新興學科。數(shù)字濾波器具有精度高、穩(wěn)定性好、靈活性強、便于集成、高性能等優(yōu)點[1-2],在數(shù)字信號處理中發(fā)揮著十分重要的作用。
MATLAB 軟件是美國MathWorks 公司推出的一套高性能科學計算軟件,它具有強大的數(shù)值分析、矩陣運算、信號處理和圖形顯示的功能。信號處理工具箱中包含許多由信號處理領域的權威專家編寫的函數(shù),可以直接調(diào)用,使編程變得很簡單。特別在數(shù)字濾波器的設計中,MATALB 軟件能夠很方便的完成數(shù)值計算以及圖形的繪制。下面我們具體說明MATLAB 軟件分別在IIR(Infinite Impulse Response)和FIR(Finite Impulse Response)數(shù)字濾波器設計中的應用。
IIR 數(shù)字濾波器的系統(tǒng)函數(shù)包含零點和單位圓內(nèi)的極點,因此可以用較低的階數(shù)設計出頻率選擇性較高的濾波器,所用的存儲單元少,計算量小、效率高。但IIR 濾波器一般不具有線性相位。設計IIR數(shù)字濾波器的思路是先把數(shù)字技術指標轉換成模擬技術指標,然后設計模擬IIR 濾波器,最后映射成一個等效的數(shù)字濾波器。
我們用沖擊響應不變法和雙線性變換法分別設計巴特沃斯濾波器和切比雪夫濾波器為例說明MATLAB 軟件的運用方法。設計IIR數(shù)字帶通濾波器,給定指標為(1)200Hz<f<400Hz,衰減<2dB,(2)f<100Hz,f>600Hz,衰減>20dB,(3)抽樣頻率fs=2kHz。
先將模擬信號經(jīng)過AD 轉換得到數(shù)字信號,那么所設計數(shù)字濾波器的的指標為:
其中Wc1=200 Hz,Wc2=400 Hz 為兩個通帶截止頻率;Wst1=100 Hz,Wst2=600 Hz 為兩個阻帶截止頻率,fs=2000 Hz 為采樣頻率。wc1,wc2,wst1,wst2分別為轉換得到的數(shù)字濾波器的兩個通帶截止頻率和兩個阻帶截止頻率。
通常的設計方法是將數(shù)字濾波器的技術指標轉換成模擬濾波器的技術指標,再將模擬帶通濾波器的技術指標轉換成模擬低通濾波器的技術指標,然后設計模擬低通濾波器,最后將設計的模擬低通濾波器轉換成數(shù)字帶通濾波器。設計方法非常復雜,然而運用MATLAB 軟件來設計非常方便,函數(shù)buttord 和cheb1ord 直接根據(jù)給定的技術指標返回巴特沃斯濾波器和切比雪夫濾波器的階數(shù)和3dB 的截止頻率,再用butter 和cheb1ord 函數(shù)返回所設計濾波器的系統(tǒng)函數(shù)。用沖擊響應不變法設計,先設計出模擬濾波器,再用impinvar 函數(shù)將模擬濾波器轉換為數(shù)字濾波器;用雙線性變換法設計可以用該函數(shù)直接設計數(shù)字濾波器。具體程序代碼如下:
fs=2000;%采樣頻率。
Wc=[2*pi*200 2*pi*400];Wst=[2*pi*100 2*pi*600];%通帶截止頻率和阻帶截止頻率。
Rp=2;Rst=20;%通帶最大衰減和阻帶最小衰減。
wc=Wc/fs;wst=Wst/fs;%所設計的數(shù)字濾波器的截止頻率。
[N,Wn]=buttord(Wc,Wst,Rp,Rst,'s');%用巴特沃斯濾波器設計,沖擊響應不變法,'s' 表示設計模擬濾波器,N 為階數(shù),Wn 為3dB 的截止頻率。
[B,A]=butter(N,Wn,'s');%返回模擬濾波器的系統(tǒng)函數(shù),B 為分子多項式系數(shù),A 為分母多項式系數(shù)。
隨著煙草行業(yè)信息化建設的飛速發(fā)展,卷煙工廠基本完成了基礎設施建設和各類業(yè)務系統(tǒng)建設,這些信息系統(tǒng)之間相對獨立,缺乏有機聯(lián)系,形成了信息孤島;各業(yè)務系統(tǒng)側重于業(yè)務處理,不能進行充分的數(shù)據(jù)價值挖掘,缺乏為企業(yè)領導的綜合分析、宏觀決策提供有力支持。因此,建設卷煙工廠的數(shù)據(jù)中心就顯得尤為迫切和重要。
[b,a]=impinvar(B,A,fs);%函數(shù)impinvar 用沖激響應不變法將模擬濾波器轉化為數(shù)字濾波器,返回b 和a 分別為數(shù)字濾波器的分子和分母多項式系數(shù)。
[h1,w1]=freqz(b,a,100);%函數(shù)freqz 算出沖激響應不變法設計巴特沃斯數(shù)字濾波器的頻率響應。
[N,Wn]=buttord(wc/pi,wst/pi,Rp,Rst);%用巴特沃斯濾波器直接設計數(shù)字濾波器,得到濾波器的階數(shù)和3dB 截止頻率。
[b,a]=butter(N,Wn);%返回數(shù)字濾波器的系數(shù)。
[h2,w2]=freqz(b,a,100);%函數(shù)freqz 算出雙線性變換法設計巴特沃斯數(shù)字濾波器的頻率響應。
[N,Wn]=cheb1ord(Wc,Wst,Rp,Rst,'s');%用切比雪夫濾波器設計模擬濾波器,得到濾波器的階數(shù)和3dB 截止頻率。
[B,A]=cheby1(N,Rp,Wn,'s');%得到模擬濾波器的系統(tǒng)函數(shù)。
[b,a]=impinvar(B,A,fs);%函數(shù)impinvar 用沖激響應不變法將模擬濾波器轉化為數(shù)字濾波器
[h3,w3]=freqz(b,a,100);%函數(shù)freqz 算出沖擊響應不變法設計切比雪夫數(shù)字濾波器的頻率響應。
[N,Wn]=cheb1ord(wc/pi,wst/pi,Rp,Rst);%用切比雪夫濾波器直接設計數(shù)字濾波器,得到濾波器的階數(shù)和3dB 截止頻率。
[b,a]=cheby1(N,Rp,Wn);%返回數(shù)字濾波器的系數(shù)。
[h4,w4]=freqz(b,a,100);%函數(shù)freqz 算出雙線性變換法設計切比雪夫數(shù)字濾波器的頻率響應。
x=[wc/pi,wst/pi];
y=[-Rp,-Rp,-Rst,-Rst];%技術指標
plot(w1/pi,20*log10(abs(h1)),'+',w2/pi,20*log10(abs(h2)),'^',w3/pi,20*log10(abs(h3)),'v',w4/pi,20*log10(abs(h4)),'o',x,y,'*');%畫圖
grid;xlabel('w/pi');ylabel('20Log(|H|)');axis([0,1,-50,10]);
legend(' 巴特沃斯,沖擊響應不變法',' 巴特沃斯,雙線性變換法',' 切比雪夫,沖擊響應不變法',' 切比雪夫,雙線性變換法');
圖1 IIR 濾波器的幅頻響應曲線
圖1 為程序運行后的濾波器的幅頻響應曲線。可以看出所設計的4 種數(shù)字濾波器通帶截止頻率為0.2π 和0.4π,w<0.1π 和w>0.6π 為阻帶,阻帶的衰減均大于20dB,滿足了數(shù)字濾波器設計的技術要求。巴特沃斯濾波器在通帶沒有出現(xiàn)波紋,而切貝雪夫濾波器在通帶出現(xiàn)波紋;雙線性變換法實現(xiàn)模擬濾波器到數(shù)字濾波器的映射不出現(xiàn)混疊現(xiàn)象,而沖擊響應不變法實現(xiàn)該轉換高頻部分有混疊現(xiàn)象,因此,在高頻阻帶,沖擊響應不變法設計的濾波器的幅頻響應曲線會往上翹,所設計的濾波器的特征都符合要求。
FIR 濾波器的系統(tǒng)函數(shù)沒有極點,保證了FIR 濾波器是穩(wěn)定的。FIR 濾波器很容易具有線性相位。設計FIR 濾波器通常有窗函數(shù)法和頻率采樣法。
窗函數(shù)法設計FIR 濾波器的基本原理就是在時域逼近理想濾波器的單位沖擊響應[3],從而使所得到的頻率響應與所要求的理想頻率響應盡可能接近。這種時域逼近時通過在時域加窗的方法得到的,通過給定的技術指標選擇窗函數(shù)的類型和長度。例如利用窗函數(shù)法設計一個線性相位低通FIR 數(shù)字濾波器,通帶截止頻率wp=0.4π,阻帶截止頻率wst=0.6π,阻帶最小衰減50dB。常用的窗函數(shù)有矩形窗、三角窗、漢寧窗、海明窗、布萊克曼窗和凱澤窗,每個窗函數(shù)加窗后的濾波器的阻帶最小衰減不一樣,根據(jù)阻帶最小衰減50dB 我們選擇海明窗,然后根據(jù)海明窗過渡帶的寬度為6.6π/N,結合需要設計的過渡帶寬度wst-wp=0.2π 計算出海明窗的長度N。截止頻率取通帶截止頻率和阻帶截止頻率中心,通過fir1 函數(shù)得到FIR 濾波器的系統(tǒng)函數(shù),程序代碼如下:
圖2 窗函數(shù)法設計FIR 數(shù)字濾波器的幅頻響應曲線
程序運行后,結果如圖2 所示。濾波器的長度N=33,阻帶截止頻率0.6π 的衰減為50dB,達到了濾波器的設計指標。
頻率采樣法對期望的頻率響應在0~2π 之間等間隔地采樣,通過采樣點的值還原出系統(tǒng)的頻率響應。雖然頻率采樣點與理想的頻率響應精確的符合,但是無法控制采樣點之間如何插值。抽樣點之間的理想頻率特性變化越陡峭,則內(nèi)插值與理想值之間的誤差就越大。在過渡帶兩邊會產(chǎn)生肩峰,通帶和阻帶也會產(chǎn)生波紋。這可以通過增加過渡帶抽樣點進行優(yōu)化,例如設計一個低通FIR 數(shù)字濾波器,wc=0.5π,抽樣點數(shù)為N=33,要求濾波器具有線性相位。(1)增加一點過渡帶進行優(yōu)化,過渡帶抽樣點值為0.5;(2)增加抽樣點數(shù)至N=65,加兩點過渡帶優(yōu)化,過渡帶抽樣點值為0.5886,0.1065。程序代碼如下:
圖3 頻率采樣法設計FIR 數(shù)字濾波器的幅頻響應曲線
程序運行后,結果如圖3 所示??梢钥闯?,增加一點過渡帶抽樣后,過渡帶的寬度由原來的2π/33,增大為4π/33,阻帶最小衰減由-17dB 增大為-30dB。可見增加過渡帶抽樣點,阻帶衰減增大,但過渡帶變寬了。抽樣點數(shù)增大到65 后,阻帶衰減增大為-65dB,過渡帶的寬度約為6π/65。若要阻帶衰減增大,又不影響過渡帶的寬度,就要增加抽樣點數(shù)。但增加抽樣點數(shù),所設計的濾波器的延時器的數(shù)量也增大了,所以需要結合具體的應用及硬件條件選擇合適的抽樣點數(shù)。
本文介紹了MATLAB 在IIR 和FIR 數(shù)字濾波器設計中的應用??梢钥闯鯩ATLAB 的引入為數(shù)字濾波器的設計提供了便捷的數(shù)值計算方法,從大量的數(shù)據(jù)推導和計算中解放出來,使得數(shù)字濾波器的設計簡單化、實用化,充分體現(xiàn)了MATLAB 軟件在數(shù)字濾波器設計中的優(yōu)越性。
[1]周硯江,顧煥峰,馮佳良.基于SPI 的快速多通道數(shù)據(jù)采集和數(shù)字濾波方法及應用研究[J].電子測量與儀器學報,2008,22(3):100-104.
[2]高明,張清,趙文才.一種基于DSP 技術的平視顯示器視差自動檢測方法[J].國外電子測量技術,2010,29(12):24-27.
[3]陳后金,薛健,胡健.數(shù)字信號處理[M].北京:高等教育出版社,2007.