


摘 要: 在大數據背景時代下,數據處理工具顯得尤為重要,其中Matlab就是數據處理的一種有效的分析工具。Matlab具有強大的函數功能,可以通過編寫M文件進行濾波器設計,同時可以通過圖形可視化工具FDAtool和WINtool對系統階次、窗函數類型、采樣頻率等參數的設置來設計系統。在可視化界面中可以很快捷地得到系統頻譜圖和時域特性圖,便于用戶進行系統穩定性分析,還可以將系統參數導出并保存為其他可處理的格式,從而方便用戶在其他平臺進一步進行系統設計和開發。
關鍵詞: 濾波器設計; FDAtool; WINtool; 窗函數類型
中圖分類號: TN911?34; G642 文獻標識碼: A 文章編號: 1004?373X(2015)24?0004?03
Design of FIR filter based on graph visualization Wintool and FDAtool
YAN Lihong, ZHANG Lefang, MA Xiaoqing
(College of Information Engineering, Xi’an Eurasia University, Xi’an 710065, China)
Abstract: In the background of big data, the data processing tool becomes particularly important, in which Matlab is an effective analysis tool. Matlab has powerful function performance, and can used to design the filter by compiling M?file. The configuration of system order, window function type and sampling frequency is conducted by graph visualization FDAtool and WINtool in Matlab toolbox to design the system. The system spectrogram and time?domain characteristic diagram can be quickly obtained in visual interface, which is easy for users to analyze system stability. The system parameters can be derived and saved as other processable formats, which is convenient for customers to further design and develop the system in other platforms.
Keywords: filter design; FDAtool; Wintool; window function type
信號處理中最主要的應用就是濾波器設計,其設計的好壞關乎系統的可用性。而濾波器設計的目的是要進行數據序列的頻率改變,可通過設置采樣頻率進行相應頻率成分信號的提取,或設計具有某一特定的通帶波紋(Passband Ripple)、阻帶衰減(Stopped Attennation)或暫態寬度(Transition Width)的濾波器。為了能更好地設計符合指標的濾波器,可采用Matlab中的函數進行編寫,也可以采用圖形可視化工具進行設計。本文主要講述使用FDAtool和Wintool可視化工具進行FIR濾波器的設計,該設計方法具有直觀、簡單的效果。
1 FIR濾波器設計原理
假設離散線性系統的輸入序列與輸出序列分別為x(n),y(n),則可以用以下方程表述輸入輸出之間的關系[1?2]:
[y(n)=i=0Mbix(n-i)-i=1Naiy(n-i)] (1)
通過對式(1)進行z變換,則有系統函數:
[H(z)=Y(z)X(z)=i=0Mbiz-i1+i=1Naiz-i] (2)
設計數字濾波器也就是設計H(z)表達式中的各項系數[ai,bi]。當H(z)表達式中分母上的各項系數均等于零時,即為有限脈沖響應FIR濾波器,則式(2)變為:
[H(z)=i=0Mbiz-i] (3)
通常在設計濾波器時是通過給定的指標去逼近理想的濾波器,理想(或稱為“brick wall”)的離散低通濾波器[3?4]的截止頻率設為ω0,在頻率小于ω0時的大小為1,在頻率從ω0到π的大小為0,其脈沖響應序列h(n)為:
[hn=12π-ππHωejωndω=12π-ω0ω0ejωndω=ω0πsinc(ω0πn)] (4)
其脈沖響應具有無限性及非因果性,為建立一個有限區間的脈沖響應即可實現的系統,可采用不同的窗函數將其截斷處理。
在FIR濾波器設計過程中,由于濾波器具有精確的線性相位、系統穩定、設計方法為線性而且系統能夠有效地在硬件中得以實現等優勢。在實際工程處理中,一般采用加窗截斷處理的方法來保留脈沖響應的中心部分,得到線性相位的濾波器。
在數字濾波器設計中窗函數的主要角色是要減弱因為截斷無限信號引起的影響。Matlab信號處理工具箱提供了16個窗函數[5],常用的函數如表1所示。
表1 常用窗函數及其對應的Matlab函數
2 FIR濾波器的加窗截斷處理設計
2.1 直接處理
創建一個31階次,低通截止頻率ω0為0.2 rad/s的濾波器,其程序為:
b2=0.2*sinc(0.2*(-15:15));
b3=b2.*hamming(31)′;
fvtool(b2,1,b3,1); %繪制頻率響應
圖1為窗函數設計的低通濾波器示意圖。由圖1可知,直接采用簡單的矩形窗設計時,由于矩形窗對信號突然截斷的緣故,在通帶及阻帶的邊緣很明顯產生了“Gibbs”效應[6],隨著濾波器長度的增加,這種現象也不會消失。但在實驗過程中,同時采用了非矩形窗設計,即在時域乘上窗函數,利用頻域卷積定理,有時域乘積等于頻域卷積,則對同樣濾波器應用長度為31的Hamming窗進行處理后,可以看出處理后大大減小了波紋。
圖1 窗函數設計的低通濾波器示意圖
2.2 函數處理
FIR1函數[7]可實現加窗線性相位FIR數字濾波器的設計,其格式有:
B = FIR1(N,Wn)
%設計一個N階低通FIR數字濾波器,其中0 B = FIR1(N,Wn,′high′) %設計一個N階高通FIR數字濾波器 B = FIR1(N,Wn,′bandpass′) %設計一個N階帶通FIR數字濾波器,其中Wn=[W1 W2] B = FIR1(N,Wn,′stop′) %設計一個N階帶阻FIR數字濾波器,其中Wn=[W1 W2] 如果Wn是一個多元矩陣,即Wn=[W1 W2,…,Wn],當 B = FIR1(N,Wn,′DC?1′) %使得多帶濾波器的第1帶為通帶 B = FIR1(N,Wn,′DC?0′) %使得多帶濾波器的第1帶為阻帶 B = FIR1(N,Wn,WIN) %設計指定窗的濾波器 其中向量Window必須是N+1個元素長度,如果沒有設定窗函數,則FIR1函數使用長度為N+1的Hamming窗,如: B=FIR1(N,Wn,kaiser(N+1,4)) %設定凱瑟窗 采用FIR1函數設計一具有截斷頻率為0.2的Hamming窗低通線性相位31階的濾波器,則: n=31; Wn=0.2; b=fir1(n,wn); freqz(b,1,512); %繪制頻譜圖 圖2為使用FIRl函數設計的濾波器。通過圖1,圖2可以看出,使用非矩形窗設計和直接使用FIR1函數進行Hamming濾波器設計的結果一致。 3 FIR濾波器的圖形可視化設計 3.1 FDAtool的FIR濾波器設計 FDAtool(Filter Design Analysis tool)是Matlab信號處理工具箱里專用的濾波器設計分析工具[8?9],它操作簡單,可用于設計及分析濾波器。在Matlab命令窗口中輸入fdatool,即可打開FDAtool界面,其下半部為design filter,用來設置濾波器的設計參數,包括濾波器的類型、設計方法、窗函數規格、頻率特性、幅度特性及濾波器的階次等內容,上半部分為頻譜特性或時域特性的顯示區。 圖2 使用FIR1函數設計的濾波器 打開FDAtool界面,設置響應的參數后,選擇FDAtool的菜單“Analysis”→“Magnitude Response”,則可得到對應的幅度譜圖,如圖3所示。 圖3 FDAtool的Hamming窗設計幅度圖 與以上設置一樣,當選擇菜單“Analysis”→“Phase Response”啟動相頻響應分析,如圖4所示。 圖4 FDAtool的Hamming窗設計相位圖 由圖4可以看到設計的FIR濾波器在通帶內其相位響應為線性的,即該濾波器是一個線性相位的濾波器。同時在FDAtool中還可以很直觀地顯示濾波器幅頻特性與相頻特性的比較,即可以通過菜單“Analysis”→“Magnitude and Phase Response”啟動分析,如圖5所示。 圖5 FDAtool的Hamming窗設計幅度和相位圖 在FDAtool可以很容易得到該濾波器的時域特性圖,只需通過菜單“Analysis”→“Impulse Response”啟動分析,如圖6所示。 圖6 FDAtool的Hamming窗設計時域特性頻譜圖 3.2 WINtool的FIR濾波器設計 WINtool是信號處理工具箱提供的圖形界面工具[10],如圖7所示。可以通過設置常用的窗函數進行濾波器的設計,能方便快捷地得到濾波器的時域特性和頻域特性。 圖7 窗函數的設計及分析工具(WINtool) 通過以上工具的使用,可以看出在進行濾波器設計過程中采用圖形分析工具更快速、便捷,同時在實際設計中方便將濾波器的參數數據進行導出和處理,也可與外部接口C語言鏈接和數據處理,可與DSP開發板鏈接和系統分析。 4 結 語 Matlab不但具有強大的函數庫,同時還具有可視化圖形工具。其可以通過函數文件編寫代碼進行濾波器設計,也可以通過人機交互界面進行信號處理,用戶可以更快捷、簡單地通過給定指標設計相應的系統,有效地提高了數據處理和系統分析的過程。在圖形可視化界面設計過程中,還可以將其設計的濾波器系統保存為.txt文件,從而方便在其他平臺上進行數據處理和分析。這將對用戶使用DSP處理器進行系統設計帶來很大的便利,也將成為用戶在工程應用上的一個有效的數據分析工具。 參考文獻 [1] 嚴慧.“數字信號處理”教學方法的探討[J].科技創新導報,2011(2):129?130. [2] 高西全,丁玉美.數字信號處理[M].3版.西安:西安電子科技大學出版社,2008. [3] 馬月紅,馬彥恒,王雪飛.基于Matlab的FIR數字濾波器設計與仿真[J].電子測量技術,2010,11(33):66?69. [4] 郭德才.基于Matlab的FIR低通濾波器的設計與仿真[J].通化師范學院學報,2009,30(8):35?37. [5] 鄔曉紅,唐紅軍,趙琳,等.基于Matlab GUI的說話人識別測試平臺設計[J].現代電子技術,2013,36(8):59?62. [6] 李京秀.基于Matlab GUI的電路特性演示平臺設計[J].現代電子技術,2012,35(22):160?162. [7] 陳瑞峰,左曙光,郭偉.基于Matlab GUI 的信號分析系統[J].佳木斯大學學報,2009,27(5):645?647. [8] 何淮淼,畢睿華,林琦.基于Matlab/FDATool的電力系統數字濾波器的設計與實現[J].南京工程學院學報:自然科學版,2011,12(4):28?31. [9] 施琴紅,趙明鏡.基于Matlab/FDATOOL工具箱的IIR數字濾波器的設計及仿真[J].科技廣場,2010(7):56?58. [10] 羅華強.訊號處理:Matlab的應用[M].臺北:全華科技圖書股份有限公司,2008.