?
在傳統(tǒng)的設(shè)計中,希爾伯特變換器可由一個FIR濾波器和一個時延模塊實現(xiàn),也可由一組濾波器對實現(xiàn),而實現(xiàn)FIR型希爾伯特變換器的一個簡單方法就是對原型低通濾波器作正弦/余弦變換。但是,無論哪種方法都需要通過計算對低通濾波器的系數(shù)進(jìn)行轉(zhuǎn)換,其計算繁瑣且存在一定的誤差。Matlab作為濾波器設(shè)計的基礎(chǔ)軟件,不僅可以快速有效地實現(xiàn)希爾伯特變換器的設(shè)計、分析仿真和最優(yōu)化,而且可以直接計算出希爾伯特變換器的系數(shù),加之Matlab具有強大的接口功能,為后續(xù)的設(shè)計提供了方便。
1 希爾伯特變換器的基本原理
連續(xù)時間信號x(t)的希爾伯特變換

?
定義為:

?
由式(1)可得單位沖擊響應(yīng)h(t)=1/(πt),由于jh(t)=j/(πt)的傅里葉變換是符號函數(shù)sgn(w),所以希爾伯特變換器的頻率特性為:

?
信號x(t)的希爾伯特變換可以看成是信號x(t)通過一個幅度為1的全通濾波器輸出,信號通過希爾伯特變換器后,其負(fù)頻率成分作+90°的相移,而正頻率成分作-90°的相移。
這類濾波器要求濾波器的零頻響應(yīng)為0,若濾波器階數(shù)為偶數(shù),則還要求Nyquist頻率(歸一化頻率為1)處的響應(yīng)為0。即如果濾波器的階數(shù)為偶數(shù),那么增益在頻率為0 Hz和fs/2處必須降為零,希爾伯特濾波器必須是一個帶通濾波器。如果濾波器的階數(shù)為奇數(shù),那么增益在頻率為0 Hz處必須降為零,希爾伯特濾波器必須是一個高通濾波器。
2 希爾伯特變換器的Matlab設(shè)計
2.1 直接程序法
Matlab信號處理工具箱提供了firls函數(shù)和remez函數(shù),它們的調(diào)用格式語法規(guī)則相同,只是優(yōu)化算法不同,函數(shù)firls利用最小二乘法使期望的頻率響應(yīng)和實際的頻率響應(yīng)間的誤差最小;函數(shù)remez實現(xiàn)Park-McClellan算法,這種算法利用remez交換算法和Che-byshev近似理論設(shè)計濾波器,使實際頻率響應(yīng)擬合期望頻率響應(yīng)達(dá)到最優(yōu)。
函數(shù)調(diào)用格式為b=remez(n,f,m,‘h’)或b=firIs(n,f,m,‘h’),其中,n為濾波器的階數(shù);f為濾波器期望頻率特性的頻率向量標(biāo)準(zhǔn)化頻率,取值0~1,是遞增向量,允許定義重復(fù)頻點;m為濾波器期望頻率特性的幅值向量,向量m和f必須同長度且為偶數(shù);b為函數(shù)返回的濾波器系數(shù),長度為n+1,本文將采用remez函數(shù)法。
下面設(shè)計一個希爾伯特變換器,要求采樣頻率為2 000 Hz,通頻帶為50~950 Hz,濾波器階數(shù)為60階。實現(xiàn)程序如下:

?
設(shè)計的希爾伯特變換器的特性如圖1,圖2所示。

?
從仿真結(jié)果可以觀察到增益在0 Hz和1 000 Hz處降為零,即為帶通濾波器;同時具有嚴(yán)格的線性相位特性,符合設(shè)計要求。在設(shè)計中如果特性不滿足要求,原有的參數(shù)必須作相應(yīng)的調(diào)整,在程序中只需對參數(shù)進(jìn)行重新設(shè)定,就可以得到所需要的希爾伯特變換器。
2.2 利用FDATool工具設(shè)計法
FDATool是Matlab信號處理工具箱專用的濾波器設(shè)計分析工具,操作簡單、靈活,可以采用多種方法設(shè)計不同的濾波器,同時可以實現(xiàn)濾波器的最小階數(shù)設(shè)計。在Matlab命令窗口輸入FDATool后回車就會彈出FDATool界面。
根據(jù)2.1中的設(shè)計實例,首先在Filter Type欄中選擇Hilbert Transformer,在Design Method欄中選擇Equiripple法,在filter order中選擇60,在Frequencyand Magnitude Specifications中設(shè)置F=[50 950];M=[1 1];Fs=2 000,最后點擊Design Filter,通過菜單選項Analysis可以在特性顯示區(qū)看到濾波器的各種特性,如圖3~圖5所示。

?
在幅頻特性和相頻特性滿足要求的同時,由圖3可知單位脈沖響應(yīng)為奇對稱,即h(n)=-h(N-n-1),也符合希爾伯特變換器的特性。若設(shè)計不滿足要求,則可以直接在FDATool界面中改變參數(shù),在設(shè)計滿足要求后,還可以把希爾伯特變換器的系數(shù)導(dǎo)出為Matlab變量,文本文件或C語言頭文件等,這為后續(xù)的設(shè)計提供方便。
3 希爾伯特變換器的效果驗證
3.1 直接程序驗證法
對于所設(shè)計的希爾伯特變換器,頻率為10 Hz的振動作為輸入信號,采樣頻率為100 Hz,驗證對應(yīng)的數(shù)據(jù)點是否滿足相位相差90°的特點,主要實現(xiàn)程序如下:

?
由圖6可知,該希爾伯特變換器對阻帶和通帶波紋進(jìn)行了控制,輸出信號的相位比輸入信號的相位前移了90°,符合希爾伯特變換的性質(zhì)。如若把輸入信號的頻率變?yōu)?10Hz,則輸出信號較之輸入信號會后移90°,如圖7所示。通過驗證可知,該希爾伯特變換器實現(xiàn)了π/2移相。

?
3.2 Simulink仿真法
利用Matlab提供的Simulink工具對該希爾伯特變換器進(jìn)行仿真,輸入信號以3.1節(jié)中的要求為例,仿真系統(tǒng)如圖8所示,在建立仿真系統(tǒng)時,注意對所選擇的模塊進(jìn)行相應(yīng)的參數(shù)設(shè)計。仿真結(jié)果如圖9,圖10所示。

?

?
4 結(jié)語
在Matlab平臺上,采用直接程序法和FDATool工具法均可以快捷有效地完成希爾伯特變換器的設(shè)計,可以隨時對比設(shè)計要求和希爾伯特變換器的特性,以使設(shè)計達(dá)到最優(yōu)化。由于Matlab具有強大的接口功能,設(shè)計的結(jié)果可以很方便地移植到DSP,FPGA等器件中。在實際使用中,只需按要求修改參數(shù),即可實現(xiàn)不同的希爾伯特變換器,實用性較強。
評論