?
在傳統的設計中,希爾伯特變換器可由一個FIR濾波器和一個時延模塊實現,也可由一組濾波器對實現,而實現FIR型希爾伯特變換器的一個簡單方法就是對原型低通濾波器作正弦/余弦變換。但是,無論哪種方法都需要通過計算對低通濾波器的系數進行轉換,其計算繁瑣且存在一定的誤差。Matlab作為濾波器設計的基礎軟件,不僅可以快速有效地實現希爾伯特變換器的設計、分析仿真和最優化,而且可以直接計算出希爾伯特變換器的系數,加之Matlab具有強大的接口功能,為后續的設計提供了方便。
1 希爾伯特變換器的基本原理
連續時間信號x(t)的希爾伯特變換
?
定義為:
?
由式(1)可得單位沖擊響應h(t)=1/(πt),由于jh(t)=j/(πt)的傅里葉變換是符號函數sgn(w),所以希爾伯特變換器的頻率特性為:
?
信號x(t)的希爾伯特變換可以看成是信號x(t)通過一個幅度為1的全通濾波器輸出,信號通過希爾伯特變換器后,其負頻率成分作+90°的相移,而正頻率成分作-90°的相移。
這類濾波器要求濾波器的零頻響應為0,若濾波器階數為偶數,則還要求Nyquist頻率(歸一化頻率為1)處的響應為0。即如果濾波器的階數為偶數,那么增益在頻率為0 Hz和fs/2處必須降為零,希爾伯特濾波器必須是一個帶通濾波器。如果濾波器的階數為奇數,那么增益在頻率為0 Hz處必須降為零,希爾伯特濾波器必須是一個高通濾波器。
2 希爾伯特變換器的Matlab設計
2.1 直接程序法
Matlab信號處理工具箱提供了firls函數和remez函數,它們的調用格式語法規則相同,只是優化算法不同,函數firls利用最小二乘法使期望的頻率響應和實際的頻率響應間的誤差最小;函數remez實現Park-McClellan算法,這種算法利用remez交換算法和Che-byshev近似理論設計濾波器,使實際頻率響應擬合期望頻率響應達到最優。
函數調用格式為b=remez(n,f,m,‘h’)或b=firIs(n,f,m,‘h’),其中,n為濾波器的階數;f為濾波器期望頻率特性的頻率向量標準化頻率,取值0~1,是遞增向量,允許定義重復頻點;m為濾波器期望頻率特性的幅值向量,向量m和f必須同長度且為偶數;b為函數返回的濾波器系數,長度為n+1,本文將采用remez函數法。
下面設計一個希爾伯特變換器,要求采樣頻率為2 000 Hz,通頻帶為50~950 Hz,濾波器階數為60階。實現程序如下:
?
設計的希爾伯特變換器的特性如圖1,圖2所示。
?
從仿真結果可以觀察到增益在0 Hz和1 000 Hz處降為零,即為帶通濾波器;同時具有嚴格的線性相位特性,符合設計要求。在設計中如果特性不滿足要求,原有的參數必須作相應的調整,在程序中只需對參數進行重新設定,就可以得到所需要的希爾伯特變換器。
2.2 利用FDATool工具設計法
FDATool是Matlab信號處理工具箱專用的濾波器設計分析工具,操作簡單、靈活,可以采用多種方法設計不同的濾波器,同時可以實現濾波器的最小階數設計。在Matlab命令窗口輸入FDATool后回車就會彈出FDATool界面。
根據2.1中的設計實例,首先在Filter Type欄中選擇Hilbert Transformer,在Design Method欄中選擇Equiripple法,在filter order中選擇60,在Frequencyand Magnitude Specifications中設置F=[50 950];M=[1 1];Fs=2 000,最后點擊Design Filter,通過菜單選項Analysis可以在特性顯示區看到濾波器的各種特性,如圖3~圖5所示。
?
在幅頻特性和相頻特性滿足要求的同時,由圖3可知單位脈沖響應為奇對稱,即h(n)=-h(N-n-1),也符合希爾伯特變換器的特性。若設計不滿足要求,則可以直接在FDATool界面中改變參數,在設計滿足要求后,還可以把希爾伯特變換器的系數導出為Matlab變量,文本文件或C語言頭文件等,這為后續的設計提供方便。
3 希爾伯特變換器的效果驗證
3.1 直接程序驗證法
對于所設計的希爾伯特變換器,頻率為10 Hz的振動作為輸入信號,采樣頻率為100 Hz,驗證對應的數據點是否滿足相位相差90°的特點,主要實現程序如下:
?
由圖6可知,該希爾伯特變換器對阻帶和通帶波紋進行了控制,輸出信號的相位比輸入信號的相位前移了90°,符合希爾伯特變換的性質。如若把輸入信號的頻率變為-10Hz,則輸出信號較之輸入信號會后移90°,如圖7所示。通過驗證可知,該希爾伯特變換器實現了π/2移相。
?
3.2 Simulink仿真法
利用Matlab提供的Simulink工具對該希爾伯特變換器進行仿真,輸入信號以3.1節中的要求為例,仿真系統如圖8所示,在建立仿真系統時,注意對所選擇的模塊進行相應的參數設計。仿真結果如圖9,圖10所示。
?
?
4 結語
在Matlab平臺上,采用直接程序法和FDATool工具法均可以快捷有效地完成希爾伯特變換器的設計,可以隨時對比設計要求和希爾伯特變換器的特性,以使設計達到最優化。由于Matlab具有強大的接口功能,設計的結果可以很方便地移植到DSP,FPGA等器件中。在實際使用中,只需按要求修改參數,即可實現不同的希爾伯特變換器,實用性較強。
評論
查看更多