李小波,靳國永,李善軍,葉天貴
(哈爾濱工程大學 動力與能源工程學院,哈爾濱150001)
噪聲控制方法從原理上可以分為兩類,即無源噪聲控制和有源噪聲控制[1]。通常來說,無源噪聲控制方法,如吸聲、隔聲和使用消聲器,對中、高頻噪聲可以取得較好的控制效果,但對低頻噪聲卻難以取得理想的控制效果[2]。因此,對低頻噪聲有較好控制效果的有源噪聲控制技術被提出并發展起來。前饋控制和反饋控制是有源噪聲控制的兩種主要形式。反饋系統雖然不需要獲得參考信號,省去了參考傳感器,但穩定性差,因此在實際的有源噪聲控制應用中,人們更愿意選擇前饋控制系統。與此同時,前饋系統會產生聲反饋現象:次級聲源產生的次級聲信號傳至參考傳感器處。聲反饋現象的存在會降低系統性能,甚至造成控制不能收斂[3]。解決聲反饋的方法有采用傳感器陣列[4]、聲學結構[5]、反饋中和算法[6]和IIR濾波器。
應用前饋濾波器和反饋濾波器兩個FIR濾波器組成IIR濾波器能夠模擬存在聲反饋時聲場傳遞函數中的零點和極點,從而抵消聲反饋的影響。同時IIR濾波器能用更少的階數達到與FIR濾波器相同的性能,但是計算復雜度更高,穩定性也更差。IIR濾波器分為兩種實現方法:輸出誤差法(OEM)和方程誤差法(EEM)。采用輸出誤差法時,誤差曲面不是標準二次型,會存在局部極小值,使收斂后反饋濾波器不能完全抵消聲反饋路徑。采用方程誤差法(EEM)的IIR濾波器沒有反饋運算,計算量更少,穩定性更好,能收斂到最優解[7]。
本文將采用方程誤差法的IIR濾波器引入到有源噪聲控制算法中,在FvLMS算法[8]的基礎上,提出EEM-FvLMS算法。在考慮聲反饋的情況下,應用FvLMS算法和EEM-FvLMS算法進行有源噪聲控制仿真實驗。仿真結果表明,對于窄帶噪聲,EEM-Fv-LMS算法性能更優;對于風機噪聲,FvLMS算法與EEM-FvLMS算法性能相當;對于FvLMS算法不能控制的誤差信號中的干擾信號,EEM-FvLMS算法也能有效控制。
IIR濾波LMS算法結構如圖1所示。

圖1 IIR濾波LMS算法框圖
其中:x(n)是輸入信號;A(n)是前饋FIR濾波器;B(n)是反饋FIR濾波器;y(n)是輸出信號;d(n)是期望信號;e(n)是誤差信號。
如圖1所示,誤差信號為

輸出信號y(n)可以表示為

其中:a(n)=[a0(n),a1(n),…,aN-1(n)]T表示前饋濾波器權系數矢量;b(n)=[b1(n),b2(n),…,bM(n)]T表示反饋濾波器權系數矢量;N和M分別表示前饋和反饋濾波器的長度。
式(2)可以表示為

其中:

假設參考信號和期望信號均是平穩各態遍歷過程,則均方誤差(mean squared error,MSE)為

LMS算法運用最陡下降法獲得權系數的遞推公式,時刻n的權系數w(n)矢量減去一個正比于梯度?()
n的量就是n+1時刻的權系數矢量,即


根據式(3)可得:

因為輸出信號y(n)與自身的過去值相關,所以不等于零,誤差曲面不是標準二次型,存在局部極小值。
在方程誤差法的IIR濾波中,輸出信號表示為

從式(9)可以看出,當前時刻的輸出信號不與過去時刻的輸出信號相關,因此誤差曲面是標準的二次型,僅有一個全局極小值。
文獻[8]給出了FvLMS算法的詳細推導過程。
考慮聲反饋的前饋有源噪聲控制系統結構如圖2所示。

圖2 存在聲反饋的有源噪聲控制系統
其中,sp(n)表示初級噪聲;P(z)表示初級噪聲到誤差傳感器的傳遞函數;R(z)表示初級噪聲到參考傳感器的傳遞函數;W(n)表示控制器;F(z)表示次級聲源到參考傳感器的傳遞函數;S(z)表示次級聲源到誤差傳感器的傳遞函數;
考慮聲反饋時,參考信號為

誤差信號為

將式(11)代入式(8),得到:

式(12)的計算過程相當復雜,因為所有過去時刻的y值及其導數都要使用當前時刻的濾波器權系數矢量來計算。假設濾波器的權系數更新足夠慢,便可以做如下近似計算:

則式(12)可以改寫為

其中:v(n)定義為

其中:

計算濾波v信號

濾波vf信號還可以表示為

其中:

則濾波器權矢量迭代公式為

其中:μ為步長因子。
圖3展示了FvLMS算法的結構圖,表1展示了FvLMS算法的計算過程。其中,Lf和LS分別表示聲反饋路徑和次級路徑長度。

圖3 FvLMS算法框圖
在FvLMS算法中應用方程誤差法,則v信號變為

在實際的有源噪聲控制實踐中,期望信號是無法測量的,但可以獲得期望信號的估計值[9]

所以在EEM-FvLMS算法中,IIR濾波器的輸入信號為


表1 FvLMS算法計算簡表
EEM-FvLMS算法結構如圖4所示,計算過程見表2。
對比兩種算法的計算過程,可以發現EEM-FVLMS算法計算量更少。
由式(24)可知,EEM-FvLMS算法中,IIR濾波器的輸入信號不僅包含參考信號,而且與誤差信號相關,所以可以預料EEM-FvLMS算法可以消除誤差信號中與參考信號不相關的噪聲。這在實際的有源噪聲控制實踐中是有利的,因為誤差傳感器會存在測量誤差,誤差傳感器處存在干擾噪聲。

圖4 EEM-FvLMS算法框圖
由式(10)可知,存在聲反饋時,參考信號與IIR濾波器輸出信號有關,進而與IIR濾波器權矢量有關,所以嚴格意義上EEM-FvLMS算法的誤差曲面也會存在局部極小值。但比較兩種算法中的信號u,可以發現:EEM-FvLMS算法中信號u與IIR濾波器權矢量的關聯性更低,因此誤差曲面更接近標準二次型,全局收斂性更好。
在MATLAB 中進行基于FvLMS算法與EEMFvLMS算法的有源噪聲控制仿真實驗。仿真實驗采用文獻[8]中所用傳遞函數:



表2 EEM-FvLMS算法計算過程表
實驗中次級通道和反饋通道建模均采用離線建模方式,FvLMS算法和EEM-FvLMS算法中前饋濾波器和反饋濾波器長度分別為70和30,步長因子統一為0.001。
(1)實驗一
初級噪聲為幅值均為1、頻率分別為200 Hz的正弦信號并疊加信噪比為30 dB的白噪聲。頻域控制結果如圖5所示。

圖5 實驗一控制結果
由圖5可知,FvLMS算法在200 Hz處取得22 dB左右的降噪量,EEM-FvLMS算法在200 Hz處取得32 dB左右的降噪量。因此,針對窄帶噪聲EEMFVLMS算法的性能更優。
(2)實驗二
初級噪聲為消聲室中采集的風機噪聲,如圖6所示。頻域控制結果如圖7所示,截取了主要噪聲頻率所在的部分頻帶。
由圖7可知FvLMS算法和EEM-FvLMS算法在90 Hz 和135 Hz處均取得了10 dB左右的降噪量。因此,針對寬帶噪聲,FvLMS算法和EEM-FvLMS算法具有相當的性能,但由前面的分析可知EEM-Fv-LMS算法的計算量更少,這在多通道控制中是非常重要的。

圖6 風機噪聲信號

圖7 實驗二控制結果
(3)實驗三
實驗三中分析當誤差信號存在干擾噪聲時Fv-LMS算法和EEM-FvLMS算法的性能。在文獻[9]中用窄帶的變壓器噪聲作為誤差傳感器處干擾噪聲。變壓器、空調和旋轉機械等生活中常見的噪聲源都具有窄帶特性。因此將窄帶噪聲作為干擾噪聲是可行的。
實驗三中初級噪聲是幅值為1、頻率為500 Hz的正弦信號并疊加信噪比為20 dB的白噪聲;誤差信號中加入幅值為1、頻率為360 Hz的正弦信號并疊加信噪比為30 dB的白噪聲的干擾信號。控制結果如圖8所示。

圖8 實驗三控制結果
由圖8可知,FvLMS算法僅可以消除初級噪聲,500 Hz處的降噪量在20 dB左右;EEM-FvLMS算法不僅可以消除初級噪聲,而且可以消除誤差信號中的窄帶干擾噪聲,在360 Hz處的降噪量為20 dB左右,在500 Hz處的降噪量為30 dB左右。
在考慮聲反饋的情況下,為解決采用OEM的FvLMS算法全局收斂性差的缺陷,提出了沒有反饋運算、全局收斂性更好、運算量更小的EMM-FvLMS算法。應用FvLMS算法和EEM-FvLMS算法進行有源噪聲控制仿真實驗。仿真結果表明:針對窄帶噪聲,EEM-FvLMS算法性能更優;針對風機噪聲,FvLMS算法與EEM-FvLMS算法性能相當;對于Fv-LMS算法所不能控制的誤差信號中的干擾信號,EEM-FvLMS算法也能有效控制。雖然針對寬帶噪聲EEM-FvLMS算法的降噪性能并無優勢,但計算量更小,這在多通道控制中是非常重要的。綜上,EEM-FvLMS算法性能更優。