吳 冉阮 晨
(1.南陽理工學(xué)院計算機與信息工程學(xué)院 南陽 473004)(2.華中科技大學(xué) 武漢 430074)
在信號處理過程中,有用的信號往往混有噪聲,根據(jù)有用信號和噪聲的特性差異,提取有用信號的過程稱為濾波[1~2],實現(xiàn)濾波功能的系統(tǒng)叫濾波器,濾波器又有模擬和數(shù)字之分。由于數(shù)字化的普及,數(shù)字濾波器已經(jīng)得到了廣泛的應(yīng)用[2~5],家用電視機,電腦;醫(yī)用各種掃描設(shè)備、核磁共振儀;軍用雷達監(jiān)控設(shè)備,飛機,導(dǎo)航系統(tǒng)等都用到了數(shù)字濾波器。根據(jù)沖激響應(yīng)的不同將數(shù)字濾波器分為有限沖激響應(yīng)FIR(Finite Impulse Response)數(shù)字濾波器和無限沖激響應(yīng)IIR(Infinite Impulse Re?sponse)數(shù)字濾波器[6~7]。IIR數(shù)字濾波器又包括巴特沃斯數(shù)字濾波器,切比雪夫I型數(shù)字濾波器,切比雪夫II型數(shù)字濾波器,橢圓型數(shù)字濾波器[8]。有兩種方式可以實現(xiàn)數(shù)字濾波器,第一,用計算機軟件編程實現(xiàn),第二,設(shè)計專用的數(shù)字處理硬件。計算機軟件編程就是要用Matlab提供的信號處理工具箱來實現(xiàn)數(shù)字濾波器[4,8]。Matlab工具箱提供了大量的函數(shù),只要指標參數(shù)設(shè)計正確,然后調(diào)用函數(shù)就可以方便快速地設(shè)計數(shù)字濾波器。Matlab使復(fù)雜的程序設(shè)計簡化成函數(shù)的調(diào)用。有時調(diào)用了Matlab函數(shù)設(shè)計數(shù)字濾波器,得到了數(shù)字濾波器系數(shù),然后對測量數(shù)據(jù)進行數(shù)字濾波,卻發(fā)現(xiàn)濾波器的輸出數(shù)據(jù)會溢出或者完全沒有數(shù)據(jù)輸出,畫出的圖是空的。這種現(xiàn)象出現(xiàn)的原因是濾波器設(shè)計時參數(shù)給得不合理,例如過渡帶太窄[9~10],求得的濾波器階數(shù)太高,濾波器不穩(wěn)定,造成數(shù)據(jù)出現(xiàn)inf或NAN。文中結(jié)合實例通過“降采樣”的方法,以及“fdesign+design”方法編程實現(xiàn)的IIR數(shù)字濾波器-巴特沃斯數(shù)字濾波器可以有效地解決上面的問題。
信號從fjndata.mat文件讀入,它由數(shù)個正弦信號與隨機噪聲疊加而成,采樣頻率為250Hz。信號中有一個5Hz的正弦信號,要求設(shè)計一個巴特沃斯濾波器,通帶頻率為1.5Hz~10Hz,阻帶頻率為1Hz和12Hz,通帶波紋Ap=3,阻帶衰減As=15。IIR數(shù)字濾波器-巴特沃斯濾波器部分程序清單如下:
仿真以后得到巴特沃斯數(shù)字濾波器的幅頻曲線如圖1所示。
圖1 巴特沃斯數(shù)字濾波器的幅頻曲線
計算出的巴特沃斯數(shù)字濾波器的階數(shù)是16階(等效的低通濾波器是8階,轉(zhuǎn)到帶通為16階),但從圖1可以看出,在頻率3Hz附近,幅頻曲線不連續(xù),如果在Matlab的工作區(qū)查看幅值H的值,可以看到H的第6個值是Inf(無窮大),這樣的濾波器顯然不適合做進一步的濾波處理(如果濾波一定會發(fā)生數(shù)據(jù)溢出,甚至也會產(chǎn)生Inf或NAN)。上述實例中,采樣頻率為250Hz,通帶頻率為1.5Hz~10Hz,該通帶的中心頻率:
采樣頻率 fs與帶通濾波器的中心頻率 f0之比有將近65倍之高,這就是造成濾波器失調(diào)的原因,過渡帶太窄,導(dǎo)致求得的濾波器的階數(shù)太高。由于濾波器系統(tǒng)不穩(wěn)定造成數(shù)據(jù)出現(xiàn)inf或NAN的原因?qū)⒃诤竺娣治觥?/p>
通過降低信號的采樣頻率,再以降低的采樣頻率設(shè)計數(shù)字濾波器,降采樣后,新的采樣頻率為fs1,一般應(yīng)使 fs1/f0<15較合適,本次仿真把采樣頻率降為1/5,為50Hz,部分程序清單如下:
程序運行中首先將信號降采樣到50Hz,巴特沃斯數(shù)字濾波器是在采樣頻率為50Hz的基礎(chǔ)上設(shè)計的,得到的巴特沃斯數(shù)字濾波器的幅頻響應(yīng)曲線如圖2所示。
圖2 降采樣設(shè)計的巴特沃斯數(shù)字濾波器的幅頻曲線
從圖2可以看出“降采樣”以后,巴特沃斯濾波器的幅頻曲線不連續(xù)情況得到了改善,響應(yīng)曲線很好。
濾波前的信號波形、降采樣后的信號波形與濾波后恢復(fù)原始采樣頻率后的輸出波形如圖3所示。
從圖3可以看出“降采樣”以后,巴特沃斯數(shù)字濾波器的濾波效果很好,所設(shè)計的巴特沃斯數(shù)字濾波器是合格的。
文中第2部分設(shè)計的IIR數(shù)字濾波器-巴特沃斯數(shù)字濾波器產(chǎn)生了溢出,經(jīng)降采樣頻率后才解決,現(xiàn)在用fdesign+design方法在相同的參數(shù)條件下設(shè)計相同的數(shù)字濾波器。程序清單如下:
程序先用fdesign函數(shù)給出濾波器的參數(shù)集合,運行調(diào)用designmethods(d)函數(shù)以后,從命令行窗口可以看到本程序的指標適合設(shè)計巴特沃斯、切比雪夫I型、切比雪夫II型和橢圓型數(shù)字濾波器,如圖4所示。
圖4 適合的數(shù)字濾波器
實例中設(shè)計的是巴特沃斯數(shù)字濾波器,所以為了保證相同條件,調(diào)用design函數(shù),設(shè)計巴特沃斯數(shù)字濾波器,得到系數(shù)集合 hd,最后通過 fvtool[11~13]畫出巴特沃斯數(shù)字濾波器的幅值響應(yīng)曲線,如圖5所示。
從圖5可以看出巴特沃斯數(shù)字濾波器的幅值響應(yīng)曲線與圖2降采樣以后的幅值響應(yīng)曲線幾乎相同。用fdesign+design設(shè)計的巴特沃斯數(shù)字濾波器雖然也一樣得到16階的濾波器,但由于它把濾波器分解為8個二階濾波器的級聯(lián),使它的幅值響應(yīng)不通過降采樣一樣可以得到滿意的結(jié)果。所以fdesign+design法也能用來設(shè)計“窄帶”的濾波器。
圖5 fdesign+design設(shè)計的巴特沃斯濾波器幅頻曲線
下面分析濾波器系統(tǒng)為什么會出現(xiàn)不穩(wěn)定性。用fdesign+design函數(shù)編程的第二部分,把巴特沃斯濾波器系數(shù)集合Hd通過tf函數(shù),得到IIR型濾波器系統(tǒng)函數(shù)的分母A和分子B(這和實例中濾波器A、B的值一樣),A的極點反映了該系統(tǒng)的穩(wěn)定性,用fdesign+design函數(shù)編程的第二部分計算了A的極點如下所示,第一列表示編號,第二列表示實部,第三列表示虛部,第4列表示模值。
一個穩(wěn)定的系統(tǒng)是要求所有的極點都在單位圓內(nèi)。但從以上結(jié)果可以看出,極點編號1~3和6~7這5個極點都在單位圓外(模值大于1),這說明了該濾波器的不穩(wěn)定性。因此在濾波過程中會出現(xiàn)NAN或Inf的數(shù)值。
設(shè)計一個低通濾波器,通帶頻率為0.25,阻帶頻率為0.4,通帶波紋為Ap=0.25dB,阻帶衰減為As=40dB,要求同時設(shè)計4種IIR濾波器。程序清單如下:
運行調(diào)用designmethods(d)函數(shù)以后,從命令行窗口可以看到本程序的指標適合設(shè)計巴特沃斯、切比雪夫I型、切比雪夫II型和橢圓型數(shù)字濾波器,所以在調(diào)用design函數(shù)時用了‘a(chǎn)lliir’參數(shù),即同時設(shè)計允許的4種濾波器。通過fvtool畫圖得到4種數(shù)字濾波器的幅值響應(yīng)曲線,如圖6所示。
圖6 4種數(shù)字濾波器的幅值響應(yīng)
從圖6中可以看出,用fdesign+design方法可以一次設(shè)計4個IIR濾波器,但經(jīng)典方法[11]要用多個語句才能設(shè)計4個IIR濾波器,這里用一個語句就可以。
文中結(jié)合實例分析了濾波器的輸出數(shù)據(jù)溢出的原因,一是過渡帶太窄,濾波器階數(shù)太高,二是濾波器系統(tǒng)不穩(wěn)定,并對濾波器系統(tǒng)不穩(wěn)定的原因進行了解釋,用“降采樣”和“fdesign+design”的Matlab編程方法設(shè)計的巴特沃斯數(shù)字濾波器,有效地解決了濾波器的輸出數(shù)據(jù)溢出的缺點。仿真表明“fde?sign+design”的方法不用通過“降采樣”也可以得到滿意的結(jié)果,而且用fdesign+design方法可以一次設(shè)計4個IIR濾波器,比經(jīng)典方法要簡單。廣大設(shè)計人員可以根據(jù)自身情況選擇快捷的方法實現(xiàn)I巴特沃斯數(shù)字濾波器的設(shè)計。