百文萌,王勁松,2,高慧杰
(1.長(zhǎng)春理工大學(xué) 光電工程學(xué)院,長(zhǎng)春 130022;2.長(zhǎng)春理工大學(xué) 中山研究院,中山 528437)
主動(dòng)噪聲控制(ANC)是一種利用聲波相消干涉原理,人為地產(chǎn)生與噪聲同頻、等幅、反相的“抗噪聲”達(dá)到降噪的新技術(shù)[1]。在整個(gè)ANC系統(tǒng)中,自適應(yīng)控制算法可以稱之為其核心部分[2-3],其中以計(jì)算量小和容易實(shí)現(xiàn)為優(yōu)點(diǎn)的濾波-x最小均方(FxLMS)算法在主動(dòng)降噪中廣泛應(yīng)用[4]。在FxLMS中,一個(gè)不可忽視的存在即為步長(zhǎng)因子,因?yàn)樗仁菦Q定算法能否收斂的關(guān)鍵因素,也是判斷收斂速率和穩(wěn)態(tài)誤差大小的重要因素。所以,對(duì)于FxLMS算法的改進(jìn)始終是個(gè)熱門(mén)課題。改進(jìn)的主要目的是在算法收斂的情況下,提高算法迭代過(guò)程的收斂速率、降低穩(wěn)態(tài)誤差以及有利于算法的硬件實(shí)現(xiàn)。目前比較經(jīng)典的改進(jìn)算法有歸一化LMS算法、泄露FxLMS算法等。其中,雖然歸一化LMS算法的收斂速率確有改善,但是在算法穩(wěn)定后,步長(zhǎng)因子不能達(dá)到一個(gè)較小的值,致使穩(wěn)態(tài)誤差較大;泄露FxLMS算法是加入泄露因子可以約束次級(jí)信號(hào),降低FxLMS算法不穩(wěn)定的機(jī)會(huì),但是收斂速度沒(méi)有得到明顯的改善。
針對(duì)上述步長(zhǎng)調(diào)整原則和變步長(zhǎng)算法的優(yōu)缺點(diǎn),提出一種泄露變步長(zhǎng)的FxLMS算法來(lái)克服傳統(tǒng)固定步長(zhǎng)的缺點(diǎn),提高算法的穩(wěn)定性。本文將對(duì)FxLMS算法和改進(jìn)后的算法分別進(jìn)行仿真分析,并最終將其運(yùn)用在雙通道主動(dòng)噪聲控制的結(jié)構(gòu)中,以提高降噪效果。
FxLMS算法是在最小均方(LMS)算法的基礎(chǔ)上考慮到了次級(jí)路徑存在的影響,由Morgan、Widrow和Burgess獨(dú)立推導(dǎo)得到[5-6]。前饋單通道FxLMS算法如圖1所示,x(n)為輸入的初始信號(hào),d(n)為初始信號(hào)通過(guò)初級(jí)傳遞函數(shù)P(z)到達(dá)誤差傳感器附近的期望信號(hào),e(n)為誤差傳感器接收到的誤差信號(hào),W(z)代表自適應(yīng)濾波器。r(n)是x(n)經(jīng)過(guò)次級(jí)路徑傳遞函數(shù)估計(jì)S?(z)后的濾波信號(hào),將r(n)和e(n)共同作為控制器W(z)的另一個(gè)輸入信號(hào),通過(guò)算法處理后獲得的控制器輸出信號(hào)y(n)再通過(guò)次級(jí)路徑傳遞函數(shù)S(z)可在誤差傳感器附近得到一個(gè)與期望信號(hào)相抵消的控制信號(hào)yp(n),從而達(dá)到降噪的目的。
圖1 基于FxLMS算法的ANC系統(tǒng)框圖
設(shè)濾波器的長(zhǎng)度為L(zhǎng),其算法具體如下:
(1)某一時(shí)間初始信號(hào)的輸入為:
(2)x(n)經(jīng)過(guò)W(z)后的信號(hào)y(n)為:
(3)y(n)經(jīng)過(guò)次級(jí)路徑后輸出的控制信號(hào)yp(n)為:
(4)x(n)經(jīng)過(guò)后輸出的濾波信號(hào)為:
(5)誤差傳感器處的誤差信號(hào)為:
(6)通過(guò)迭代求取新的濾波器抽頭系數(shù):
式中,步長(zhǎng)μ為一個(gè)固定值,取值需滿足:
式中,λmax是初始信號(hào)向量自相關(guān)矩陣的最大特征值。
由上述的公式可知算法的收斂系數(shù)μ是一個(gè)固定的值,其取值的大小影響著算法收斂速度和系統(tǒng)的穩(wěn)定性。經(jīng)過(guò)仿真分析可得,步長(zhǎng)取值較大時(shí),可使算法較快收斂,但同時(shí)會(huì)使系統(tǒng)的穩(wěn)態(tài)誤差增大,嚴(yán)重時(shí)會(huì)導(dǎo)致算法發(fā)散,步長(zhǎng)取值較小時(shí),可使算法的穩(wěn)態(tài)誤差較小,使系統(tǒng)的穩(wěn)定性更好,但是算法達(dá)到穩(wěn)定時(shí)所需的時(shí)間較長(zhǎng)。
分析可知,步長(zhǎng)是一個(gè)至關(guān)重要的存在,為了更好地兼顧收斂速度和穩(wěn)態(tài)誤差這兩個(gè)關(guān)鍵因素,人們提出了變步長(zhǎng)的改進(jìn)思路[7],即:在算法初期,為了保證有較高的收斂速率,應(yīng)使步長(zhǎng)因子的值處于一個(gè)較大的值,在算法末期,為了保證有較低的穩(wěn)態(tài)誤差,則此時(shí)對(duì)應(yīng)的步長(zhǎng)因子的值也應(yīng)該較小。在上述的步長(zhǎng)設(shè)計(jì)思路下,考慮到權(quán)系數(shù)更新過(guò)程中由實(shí)際次級(jí)路徑下的數(shù)模轉(zhuǎn)換過(guò)程產(chǎn)生的量化誤差給系統(tǒng)帶來(lái)的泄露影響[8],進(jìn)而提出一種泄露變步長(zhǎng)FxLMS算法。
由前文可知,F(xiàn)xLMS算法的權(quán)矢量迭代公式為:
根據(jù)歸一化FxLMS算法可得步長(zhǎng)因子公式為:
則權(quán)系數(shù)更新公式改寫(xiě)成:
則更為可靠的實(shí)現(xiàn)方式[9]為:
式中,μ0和ε均為正常數(shù)。當(dāng)歐式范數(shù)平方‖r(n)‖2出現(xiàn)較小值時(shí),易引起步長(zhǎng)過(guò)大,從而導(dǎo)致算法發(fā)散,常數(shù)ε的存在則避免了此類情況的出現(xiàn)。對(duì)于存在的常數(shù)μ0,可以看作為步長(zhǎng)參數(shù),用來(lái)控制調(diào)節(jié)算法的收斂速率和失調(diào)量,當(dāng)μ0=1和ε=0時(shí),此時(shí)的遞推方程式(11)即為式(10)。
由式(11)可得步長(zhǎng)因子與輸入的初始信號(hào)的自相關(guān)矩陣有關(guān)。對(duì)算法的分析可知,此歸一化FxLMS算法的步長(zhǎng)因子雖在自適應(yīng)過(guò)程初始階段有變化,但在自適應(yīng)過(guò)程趨于穩(wěn)定之后其步長(zhǎng)不能達(dá)到一個(gè)小的值,則穩(wěn)態(tài)誤差會(huì)增大。在此基礎(chǔ)上改變步長(zhǎng),可用步長(zhǎng)因子除以誤差向量的歐式平方范數(shù),使步長(zhǎng)在自適應(yīng)過(guò)程初始階段有一個(gè)較大的值,且伴隨著迭代過(guò)程的進(jìn)行,步長(zhǎng)也將逐步降低,并最終穩(wěn)定在一個(gè)較小的值,即降低穩(wěn)態(tài)誤差,使系統(tǒng)更加穩(wěn)定。有:
式中,誤差向量e(n)的歐式平方范數(shù)可以寫(xiě)為,隨著采樣次數(shù)的增加可知,步長(zhǎng)μ(n)既和當(dāng)前的誤差量e(n)有關(guān),又和誤差向量迭代過(guò)程的前n步有關(guān),因此,迭代步長(zhǎng)是平滑下降的一個(gè)函數(shù)[10],確保了步長(zhǎng)在自適應(yīng)過(guò)程的初期值較大,末期值較小,可以有效地降低穩(wěn)態(tài)誤差。另外,固定參數(shù)a的選取影響著μ(n)的變化,受初始信號(hào)的影響,參數(shù)值不容易確定。由于此算法中μ(n)的值只能是不斷地下降,所以在應(yīng)對(duì)非平穩(wěn)隨機(jī)過(guò)程系統(tǒng)中的跟蹤能力較弱[11]。為此,可引入對(duì)數(shù)函數(shù)對(duì)其進(jìn)行改進(jìn),使得μ(n)的值在一定的范圍內(nèi)不斷地進(jìn)行調(diào)整,有:
其中,γ的數(shù)值影響步長(zhǎng)函數(shù)μ(n)的陡峭化程度,γ的值越大,其整體的變化率就越快,α和β的值確定了μ(n)的變化范圍。這里的e(n)2代表第n次迭代中瞬時(shí)誤差量的平方值,對(duì)比上式e(n)的歐式平方范數(shù)而言,運(yùn)算量大幅度降低,只需要一個(gè)標(biāo)量的平方運(yùn)算,更易于硬件的實(shí)現(xiàn),并且由于μ(n)僅與當(dāng)前誤差向量e(n)有關(guān),不是單純地不斷下降,而是根據(jù)當(dāng)前的誤差在范圍內(nèi)不斷地調(diào)整,提高了算法的實(shí)時(shí)性,使算法也適合于非平穩(wěn)過(guò)程。
此時(shí)的權(quán)系數(shù)更新公式為:
本文提出的泄露變步長(zhǎng)FxLMS是在式(14)的基礎(chǔ)上,考慮了實(shí)際數(shù)模轉(zhuǎn)換過(guò)程中量化誤差帶來(lái)的泄露影響,可將上式的權(quán)值更新公式改寫(xiě)為:
式中,η是泄露系數(shù),是小于且接近1的一個(gè)常數(shù)。
由前面的分析可知,在更新濾波器抽頭系數(shù)的迭代公式中含有濾波-x信號(hào)矢量r(n),r(n)是x(n)通過(guò)傳遞函數(shù)估計(jì)模型求得。對(duì)次級(jí)路徑建模,如圖2所示,選擇LMS算法模塊,獲得傳遞函數(shù)估計(jì)模型的值。
圖2 次級(jí)通道建模原理圖
次級(jí)路徑建模的步驟如下:
(2)使用誤差傳感器接收由揚(yáng)聲器產(chǎn)生的對(duì)消信號(hào)y(n):
(4)計(jì)算路徑的實(shí)際模型和估計(jì)模型之間的輸出差值:
(6)重復(fù)以上迭代過(guò)程,利用誤差信號(hào)e(n)不斷調(diào)節(jié)權(quán)系數(shù),直至達(dá)到設(shè)定要求為止,同時(shí)將得到的的系數(shù)值存儲(chǔ)起來(lái),方便后續(xù)Fx-LMS算法使用。
現(xiàn)根據(jù)圖2所示的過(guò)程進(jìn)行次級(jí)路徑建模仿真,為了驗(yàn)證結(jié)果的有效性,設(shè)傳遞函數(shù)[12]為:
通過(guò)對(duì)其進(jìn)行建模分析,取μ=0.01作為建模過(guò)程中LMS算法的步長(zhǎng)因子的值,仿真的結(jié)果如圖3所示,從圖3(a)中可看出,識(shí)別誤差從采樣點(diǎn)數(shù)100往后接近于零,系統(tǒng)也趨于收斂。即建模仿真實(shí)驗(yàn)對(duì)次級(jí)路徑的識(shí)別效果是穩(wěn)定的。另外,通過(guò)仿真建模實(shí)驗(yàn)得到的實(shí)際路徑和估計(jì)路徑的濾波器權(quán)值也非常接近,仿真結(jié)果表明實(shí)驗(yàn)有良好的估計(jì)值,辨識(shí)結(jié)果準(zhǔn)確。
圖3 次級(jí)通道傳遞函數(shù)建模仿真實(shí)驗(yàn)
仿真中,將傳統(tǒng)的FxLMS算法和本文的改進(jìn)FxLMS算法進(jìn)行比較,由于單一的頻率信號(hào)在實(shí)際應(yīng)用中很少存在,而更常見(jiàn)的是帶有一定帶寬的噪聲信號(hào),因此本文的仿真實(shí)驗(yàn)中采用的是混合信號(hào),將x(t)=s(t)+v(t)作為輸入信號(hào),其中v(t)是信噪比SNR=7的隨機(jī)白噪聲,s(t)是一個(gè)混頻信號(hào),則:
即該信號(hào)由頻率分別為200 Hz、350 Hz和600 Hz組合構(gòu)成??紤]到收斂速度和實(shí)現(xiàn)的硬件成本,選取濾波器的階數(shù)為16,傳統(tǒng)FxLMS算法的固定步長(zhǎng)取μ=0.012,改進(jìn)算法仿真中取泄露因子η=0.999,步長(zhǎng)函數(shù)各參數(shù)取β=0.012,α=0.003,γ值的大小決定其變化率,這里取γ=10。
仿真結(jié)果如圖4所示,圖4(a)和圖4(b)分別代表了FxLMS算法和泄露變步長(zhǎng)FxLMS算法濾波的噪聲殘留。從圖中可知,噪聲經(jīng)過(guò)這兩種算法的處理都得到了顯著的改善,然而對(duì)比觀察即可發(fā)現(xiàn),在改進(jìn)算法的處理下,噪聲殘留明顯有所降低,這是由于改進(jìn)算法的步長(zhǎng)是根據(jù)當(dāng)前誤差向量在一定的范圍內(nèi)不斷地進(jìn)行調(diào)整,如圖4(c)所示,步長(zhǎng)在迭代的過(guò)程中整體呈現(xiàn)下降的趨勢(shì),并且在迭代的后期也處于較小值的狀態(tài),因此,收斂后的穩(wěn)態(tài)誤差較小,噪聲殘留也更低。
圖4 單通道兩種算法的仿真結(jié)果
為了驗(yàn)證改進(jìn)算法的優(yōu)良性,把白噪聲作為輸入信號(hào),對(duì)比FxLMS算法和改進(jìn)的FxLMS算法的收斂性能,算法的各參數(shù)設(shè)定值不變,其均方誤差(MSE)如圖5所示,可以看出改進(jìn)的FxLMS算法明顯比傳統(tǒng)的FxLMS算法的收斂速度快,且穩(wěn)態(tài)誤差值也較低,整體的穩(wěn)定性也更好。
圖5 不同算法的MSE對(duì)比圖
圖6為單通道系統(tǒng)下不同算法處理后的功率譜。圖6(a)為經(jīng)過(guò)傳統(tǒng)FxLMS算法降噪處理后的功率譜,其在中心頻率200 Hz、350 Hz、600 Hz處的幅值下降為13.8 dB。圖6(b)為提出的泄露變步長(zhǎng)FxLMS算法經(jīng)過(guò)降噪處理后的功率譜,其在中心頻率處的幅值下降為19.6 dB。
圖6 不同算法降噪前后的功率譜
由于單通道的ANC系統(tǒng)的降噪范圍有限,只能實(shí)現(xiàn)小范圍內(nèi)的噪聲減小,而有源噪聲控制的目的是提高降噪效果,擴(kuò)大降噪范圍以及適應(yīng)復(fù)雜的環(huán)境,因此引入多通道控制系統(tǒng)進(jìn)行降噪。多通道ANC系統(tǒng)與單通ANC系統(tǒng)類似[13],有I個(gè)初始傳感器、J個(gè)次級(jí)聲源以及K個(gè)誤差傳感器、因此就存留了I×J個(gè)初級(jí)通道和J×K個(gè)次級(jí)通道。
本文將以1×2×2的雙通道有源降噪系統(tǒng)為模型,將分別對(duì)前文的FxLMS算法和改進(jìn)的Fx-LMS算法進(jìn)行分析和對(duì)比。
從以上分析可知,雙通道的系統(tǒng)模型1×2×2中,包含1×2個(gè)初級(jí)聲通道和2×2個(gè)次級(jí)聲通道,其示意圖[14]如圖7所示。P1(z)和P2(z)分別代表了初級(jí)傳感器到誤差傳感器1和誤差傳感器2的聲通道的傳遞函數(shù),同理,S11(z)和S12(z)代表的是次級(jí)聲源1分別到誤差傳感器1和誤差傳感器2的次級(jí)路徑傳遞函數(shù),S21(z)和S22(z)代表的是次級(jí)聲源2分別到兩個(gè)誤差傳感器的次級(jí)路徑傳遞函數(shù)。
圖7 雙通道系統(tǒng)示意圖
圖8為基于 FxLMS算法的 1×2×2結(jié)構(gòu)圖,圖中有只有一路的信號(hào)輸入,兩路次級(jí)信號(hào)的輸出和四路的次級(jí)通道,另外控制器的輸入信號(hào)是初始信號(hào)與四路次級(jí)通道傳遞函數(shù)估計(jì)值卷積運(yùn)算后的信號(hào),根據(jù)前文的單通道FxLMS算法的迭代過(guò)程可以寫(xiě)出這個(gè)結(jié)構(gòu)圖中的兩路誤差信號(hào)為:
圖8 基于FxLMS算法的1×2×2結(jié)構(gòu)圖
則兩個(gè)控制器權(quán)系數(shù)迭代公式為
由式(24)和式(25)可知,在權(quán)系數(shù)迭代更新中每一個(gè)控制器都有兩個(gè)誤差量來(lái)共同調(diào)節(jié),以此達(dá)到更好的降噪效果。
雙通道系統(tǒng)與單通道系統(tǒng)相比,其系統(tǒng)的復(fù)雜度有所增加,如若采用在線建模的方式,稍有不慎就會(huì)造成整個(gè)系統(tǒng)的發(fā)散,此時(shí)離線建模的優(yōu)點(diǎn)將更明顯地顯現(xiàn)出來(lái),與在線建模相比,其算法的計(jì)算量大大減小,算法整體的運(yùn)行速度和收斂收率也顯著提升,且有效地提高系統(tǒng)的穩(wěn)定性。由于白噪聲的各頻段分量都是恒定的,因而它對(duì)次級(jí)通道進(jìn)行建模而言是一種理想的激勵(lì)信號(hào),并將獲得的次級(jí)通道估計(jì)值用于后續(xù)算法之中。
已知多通道系統(tǒng)中存留J×K個(gè)次級(jí)通道。而需要采用的FxLMS算法由于濾波信號(hào)的存在,則要求對(duì)所有的次級(jí)通道進(jìn)行補(bǔ)償。因此離線建模需要的次級(jí)通道估計(jì)模型S?jk(z)也為J×K個(gè)。圖9給出了當(dāng)J=2、K=2時(shí)的離線辨識(shí)算法結(jié)構(gòu)[15]。
圖9 雙通道系統(tǒng)次級(jí)通道建模原理圖
其中v1(n)和v2(n)為雙通道離線建模系統(tǒng)輸入的白噪聲信號(hào),另外,v1(n)、v2(n)經(jīng)過(guò)次級(jí)通道估計(jì)模型S?jk(n)后輸出yvjk(n),而v1(n)、v2(n)經(jīng)過(guò)實(shí)際次級(jí)通道可輸出ypjk(n),在誤差傳感器1和誤差傳感器2位置處,以上兩種次級(jí)聲源疊加可分別構(gòu)成誤差信號(hào)e1(n)和e2(n),其表達(dá)有:
圖9中的f1(n)、f2(n)表示輸入信號(hào)經(jīng)過(guò)次級(jí)通道和次級(jí)通道估計(jì)模型后輸出信號(hào)之間的差值,即:
(1)雙通道次級(jí)通路建模
在進(jìn)行仿真前,需要完成上述原理圖中所有次級(jí)通道傳遞函的估計(jì),根據(jù)文獻(xiàn)[16],可設(shè)系統(tǒng)聲通道的傳遞函數(shù),有:
利用本節(jié)提及的白噪聲來(lái)檢驗(yàn)上述次級(jí)通道傳遞函數(shù)的可行性,其中建模過(guò)程中算法的步長(zhǎng)因子同樣為0.01,以次級(jí)通道1為例,其結(jié)果如圖10所示,即誤差信號(hào)可以很快地收斂于零,證明了所設(shè)置的次級(jí)通道傳遞函數(shù)是有效的,且不會(huì)造成系統(tǒng)的發(fā)散。
圖10 次級(jí)通路建模結(jié)果
(2)雙通道FxLMS算法仿真
仿真的信號(hào)參數(shù)和前文的單通道的參數(shù)一樣,則實(shí)驗(yàn)仿真結(jié)果如圖11(a)和圖11(b)所示,在雙通道中,改進(jìn)的FxLMS算法仍舊比傳統(tǒng)的FxLMS算法的收斂速度更快。
圖11 雙通道兩種算法的仿真結(jié)果
圖12是兩種算法在雙通道系統(tǒng)中降噪前后的功率譜。由圖12(a)圖可得,傳統(tǒng)FxLMS算法在降噪前后位于其中心頻率的降噪量達(dá)到為18.2 dB,由圖12(b)知,本文提出的泄露變步長(zhǎng)FxLMS算法降噪前后在中心頻率處的降噪量最高達(dá)到24.7 dB。即雙通道比單通道的降噪效果好,且基于改進(jìn)算法的降噪效果比傳統(tǒng)的FxLMS算法降噪效果好。
圖12 雙通道不同算法降噪前后的功率譜
本文提出的泄露變步長(zhǎng)FxLMS算法以瞬時(shí)誤差向量的平方值作為步長(zhǎng)的函數(shù)的輸入信號(hào),經(jīng)仿真結(jié)果表明,在收斂速度和穩(wěn)態(tài)誤差上均有明顯的優(yōu)勢(shì),并且其仿真功率譜表明,經(jīng)過(guò)FxLMS算法和泄露變步長(zhǎng)FxLMS算法降噪處理后,在單通道中的降噪量分別為13.8 dB和19.6 dB,而在雙通道中的降噪量分別為18.2 dB和24.7 dB,從雙通道ANC系統(tǒng)的降噪量可以表明多通道ANC系統(tǒng)有非常好的降噪效果。但是,對(duì)于多通道ANC系統(tǒng)而言計(jì)算量是未來(lái)進(jìn)一步需要研究的重點(diǎn)。