仝喜峰,陳衛(wèi)松,錢隆彥,肖夢迪
(安徽師范大學(xué) 物理與電子信息學(xué)院,安徽 蕪湖 241000)
自適應(yīng)主動噪聲控制技術(shù)被認(rèn)為是一種有效的噪聲控制方法,并且在低頻噪聲控制領(lǐng)域取得了許多實際應(yīng)用[1]。在自適應(yīng)主動噪聲控制系統(tǒng)中,多采用最小均方LMS算法[2-5], LMS算法步長因子選取較大值時,算法可以獲取較快的收斂速度,但是穩(wěn)態(tài)誤差較大;當(dāng)步長因子選取較小值時,算法可以獲取較小的穩(wěn)態(tài)誤差,但收斂速度較慢。固定步長值的固有缺陷無法合理協(xié)調(diào)收斂速度和穩(wěn)態(tài)誤差,各種變步長LMS算法陸續(xù)出現(xiàn),其原理是在算法收斂過程中動態(tài)地改變步長值。文獻[6]提出將步長值μ隨算法迭代次數(shù)增大而減小,達到變步長調(diào)整的目的,但是這種步長調(diào)整規(guī)則僅適用于非時變的系統(tǒng)。文獻[7]提出了一種基于Sigmoid函數(shù)的變步長SVSLMS算法,通過在步長和誤差信號之間建立非線性關(guān)系,有效解決了文獻[6]中面向系統(tǒng)的問題,但該算法在誤差較小時,步長調(diào)整幅度較大導(dǎo)致算法不能保證較小的穩(wěn)態(tài)失調(diào)。文獻[8]在SVSLMS算法的基礎(chǔ)上提出一種新的算法,解決了誤差較小時步長調(diào)整過快的問題。
雖然變步長LMS算法種類繁多,但是對步長調(diào)整的原則大致相同。即在誤差值大時(初始收斂階段),為了算法獲得較快的收斂速度,步長取較大值;當(dāng)誤差小時(收斂完成階段),為了獲取小的穩(wěn)態(tài)誤差,步長取較小值,以此來提高整個算法的性能[9-12]。本文在現(xiàn)有變步長LMS自適應(yīng)濾波算法的理論基礎(chǔ)上,通過引入步長因子與誤差信號的非線性關(guān)系,提出了一種新的變步長LMS算法,并將其應(yīng)用在電腦風(fēng)扇低頻噪聲控制中。經(jīng)仿真實驗得知,針對電腦風(fēng)扇噪聲控制具有較好的效果。
自適應(yīng)濾波器結(jié)構(gòu)[13]如圖1所示。其中,x(n)為n時刻的輸入信號,y(n)為自適應(yīng)濾波器的輸出信號,d(n)為n時刻的期望信號,通過期望信號d(n)與濾波器輸出信號y(n)作差運算得到n時刻的誤差信號e(n),自適應(yīng)濾波器根據(jù)誤差信號的變化來自適應(yīng)調(diào)節(jié)濾波器參數(shù),直到自適應(yīng)濾波器的輸出信號y(n)無限接近期望信號d(n)。
圖1 自適應(yīng)濾波器結(jié)構(gòu)
LMS自適應(yīng)濾波算法的基本步驟如下:
y(n)=WT(n)X(n),
(1)
e(n)=d(n)-y(n),
(2)
W(n+1)=W(n)+2μe(n)X(n),
(3)
式中,μ為步長因子。
在眾多類型的變步長算法中,由覃景繁等人基于Sigmoid函數(shù)提出的變步長LMS算法是最為經(jīng)典的一種,SVSLMS算法變步長函數(shù)表達式為[7]:
(4)
式中,變步長μ(n)為e(n)的sigmoid函數(shù),α為控制函數(shù)形狀的常數(shù),β為控制函數(shù)取值范圍的常數(shù)。通過在誤差信號和步長之間建立新的非線性函數(shù)關(guān)系,克服了LMS算法收斂速度與穩(wěn)態(tài)誤差之間的矛盾。變步長函數(shù)μ(n)可以滿足在算法收斂初期選取較大步長,在算法已經(jīng)完成收斂狀態(tài),選取較小步長保證較小的穩(wěn)態(tài)誤差。使得算法可以在獲得較快收斂速度的前提下,保證較小的穩(wěn)態(tài)誤差,并在跟蹤能力上有了較大的提升。但SVSLMS算法在變步長函數(shù)設(shè)置上仍然存在一定的缺陷,在誤差e(n)接近零處時,變步長函數(shù)變化太大,不具有緩慢變化的特性,使得SVSLMS算法在自適應(yīng)穩(wěn)態(tài)階段仍具有較大的步長變化。基于此,文獻[8]提出了一種改進的SVSLMS算法,步長調(diào)整函數(shù)為:
(5)
(6)
圖2為sigmoid函數(shù)及調(diào)整過程中的非線性函數(shù)曲線,其中曲線1為Sigmoid函數(shù)曲線,曲線2為Sigmoid函數(shù)求導(dǎo)曲線,曲線3為曲線2翻轉(zhuǎn)后的曲線,將曲線3向上平移0.5個單位長度得到最終的曲線4。
圖2 sigmoid函數(shù)及調(diào)整過程中的非線性函數(shù)曲線
隨著自變量的增大,函數(shù)的斜率呈現(xiàn)先增大后減小的特點,將其導(dǎo)函數(shù)取反得到曲線3,呈現(xiàn)先減小后增大的規(guī)律,向上平移得到最終函數(shù)曲線4。從圖2可以發(fā)現(xiàn)曲線4滿足非線性變步長函數(shù)的調(diào)整原則,在初始收斂階段步長保持較大取值,在收斂完成階段選擇較小步長取值,并且在誤差接近零處時,步長調(diào)整節(jié)奏緩慢。式(6)可以看做是一種新型的非線性變步長函數(shù)模型,為了更好地對其形狀進行控制,本文將參數(shù)α,β引入公式中[14],得到改進的非線性函數(shù)模型:
(7)
式中,參數(shù)β主要控制函數(shù)取值范圍;α,β共同控制函數(shù)的形狀。
為了更加直觀地對本文列舉的3種算法變步長函數(shù)進行對比,圖3(a)和圖3(b)分別為3種算法的變步長函數(shù)與誤差關(guān)系對比圖和局部對比圖,從圖中可以看出,3種算法的迭代步長函數(shù)都能保證在誤差較大的算法收斂初期提供較大的步長,提高算法的收斂速度;在誤差較小(接近于0時)的算法收斂階段提供較小的步長,保證算法收斂狀態(tài)的穩(wěn)定性。
圖3 3種算法對比圖
從圖3(a)可以看出,當(dāng)算法初始收斂階段(誤差較大時),本文算法的步長取值在3種算法中最大,確保了算法的收斂速度。對比3種變步長函數(shù)曲線可以看出,改進的SVSLMS算法和本文算法在誤差信號趨于零時,步長變化相對較緩慢,確保算法可以獲得較好的穩(wěn)定性,本文變步長函數(shù)表現(xiàn)更優(yōu)。
為了更好地分析本文提出的變步長函數(shù)中參數(shù)α,β的作用以及取值,下面分別討論參數(shù)α,β對函數(shù)模型性能的影響,并分析其適當(dāng)?shù)娜≈捣秶?。圖4和圖5分別為β相同、α不同,α相同、β不同2種情況下,變步長函數(shù)μ(n)與誤差信號e(n)之間的關(guān)系曲線。
圖4 μ(n)與e(n)的關(guān)系曲線(β相同、α不同)
圖5 μ(n)與e(n)的關(guān)系曲線(α相同、β不同)
圖4為β取1.5時,α分別取0.2,0.5,1,3,5的步長因子與誤差的函數(shù)曲線。圖中多數(shù)曲線均能滿足變步長取值的原則,在誤差值大時(初始收斂階段),為了算法獲得較快的收斂速度,步長取較大值;當(dāng)誤差小時(收斂完成階段),為了獲取小的穩(wěn)態(tài)誤差,步長取較小值來提高整個算法的性能。此外,穩(wěn)態(tài)誤差與步長取是密切相關(guān),當(dāng)誤差接近零處時,為了算法可以平穩(wěn)收斂,保持較小的穩(wěn)態(tài)誤差,此時步長選取較小值,并且變化幅度較為平緩。顯然圖4中多數(shù)曲線均能滿足這一點要求。
由上分析可見,α值越大,模型性能越優(yōu)。但太大的α?xí)共介L因子在誤差較大時減到一個較小的值,從而使系統(tǒng)的收斂速度變慢。當(dāng)α越小時,在穩(wěn)態(tài)階段算法可以獲得較小的步長值,保證算法的穩(wěn)定性,但在誤差較大時卻不能提供較大的步長值來加快算法的收斂速度。綜合以上因素,α值宜在2.8~3.2范圍內(nèi)選取,本文選定α=3,此時算法在誤差較大時,步長因子取值較大,保證了算法收斂速度較快,而在誤差接近零時步長曲線也逐漸貼近零刻度線,并且變化幅度較為平緩,算法獲得更高的穩(wěn)定性。
圖5為α取3時,β分別取0.2,0.5,1.5,3,5的步長因子與誤差的函數(shù)模型曲線。從迭代步長與參數(shù)β關(guān)系圖可以看出,對于相同的的初始誤差,β取值越大,初始收斂階段算法的收斂速度越快。若β取值過大,雖然收斂速度得到提高但是算法收斂后|e(n)|對應(yīng)的步長μ(n)也較大,造成較大的穩(wěn)態(tài)誤差。如果在實際應(yīng)用中對收斂速度的需求較高,則可以選用較大的β值;如果對穩(wěn)態(tài)誤差的需求較高,可選取較小的β值。但應(yīng)當(dāng)注意的是,當(dāng)β取值過小時,步長μ(n)迭代變化區(qū)間較小,此時變步長LMS算法也就近似退化為固定步長LMS算法,收斂速度不會有較大提高。為分析方便,本文取α為定值3,β為變參數(shù),μ(n)與β成正比,根據(jù)實際需求決定參數(shù)β的最優(yōu)取值。
為了檢驗本文算法的收斂速度和穩(wěn)態(tài)誤差性能表現(xiàn),對算法進行仿真實驗,并選取2種具有代表性的變步長LMS自適應(yīng)濾波算法作為對比。
圖6為3種算法的最小均方誤差(MSE)變化曲線對比,從圖中可見,在信噪比SNR分別為5,10,15三種噪聲背景下,SVSLMS算法的收斂速度最慢,本文提出的算法在不同噪聲環(huán)境下均能表現(xiàn)出較快的收斂速度。圖6(a)在SNR=5低信噪比背景下,本文算法迭代80次左右就已經(jīng)完成了算法的收斂過程,而SVSLMS算法及改進的SVSLMS算法完成整個收斂過程則需要迭代次數(shù)達到200次和150次。當(dāng)信噪比較大時,本文算法提高收斂速度的優(yōu)勢將進一步擴大。
圖6 不同信噪比背景下3種算法MSE對比
為了進一步檢驗算法在面對時變噪聲背景時跟蹤收斂能力的表現(xiàn),仿真條件在算法迭代到500次時,未知系統(tǒng)發(fā)生時變,圖7分別為不同信噪比背景下3種算法跟蹤收斂能力的曲線對比。
圖7 3種算法跟蹤收斂效果對比圖
由圖7 可以看出,當(dāng)未知系統(tǒng)發(fā)生時變時,3種算法均能保持較好的跟蹤能力。本文算法在3種算法中表現(xiàn)最優(yōu),并且隨著信噪比的增加,這一優(yōu)勢也逐漸拉大。
為了分析本文提出算法在實際噪聲環(huán)境中的應(yīng)用效果,錄制了一段電腦風(fēng)扇噪聲并導(dǎo)入Matlab程序,采用本文算法對噪聲進行有源噪聲控制。在實際仿真中設(shè)置信噪比SNR=5 dB,濾波器長度為8。
圖8為3種算法作用下電腦風(fēng)扇殘余噪聲時域圖。從圖中可以看出,SVSLMS算法完成收斂需要迭代120次,改進SVSLMS算法則需要80次,而本文算法在迭代50次左右就已完成收斂。除此之外,本文算法的魯棒性也明顯的優(yōu)于其他2種算法。
圖8 電腦風(fēng)扇殘余噪聲時域圖
通過在誤差信號與步長之間建立另一非線性關(guān)系,本文提出了一種新的變步長LMS自適應(yīng)濾波算法,達到了動態(tài)改變步長大小的目的,并且分析了變步長函數(shù)中參數(shù)α,β對算法收斂的影響以及取值原則。實驗仿真結(jié)果表明,本文算法有效克服了SVSLMS算法在收斂階段步長變化過快的弊端,與改進的SVSLMS算法相比,雖然計算量有所增加,但可以獲取更好的收斂效果。該算法在后期需要在算法復(fù)雜度方面進行優(yōu)化,減小算法的計算量。