錢拴,高健珍,代永平
(1.南開大學 光電子薄膜器件與技術研究所,天津 300350;2.天津市光電子薄膜器件與技術重點實驗室,天津 300350)
隨著城市化進程,環(huán)境的噪音問題日益突出[1],降噪的設備及相關算法逐漸成為了研究的熱點問題[2],濾波最小均方算法(Filtered-x Least Mean Square,F(xiàn)xLMS)由于其計算量相對較小被大量應用于主動降噪設備[3]。最小均方算法的降噪步長決定了系統(tǒng)的降噪速度以及降噪精度,步長的迭代公式也決定了算法的運算量,進而影響設備降噪的速度[4]。FxLMS 可用于主動降噪設備以降低設備局部噪音,包含的降噪場景有電梯[5]、高鐵、汽車[6]、耳機[7]以及潛艇等方面,在社會應用中有極大應用價值。
算法迭代步長是FxLMS 研究重要方向之一[8],較大的迭代步長可以使得FxLMS 算法收斂速度較快,但是系統(tǒng)的穩(wěn)態(tài)性不高;較小的迭代步長可以提供較穩(wěn)態(tài)的結果,但是系統(tǒng)的迭代次數(shù)過多,收斂速度較慢。針對以上問題,文獻[9]提出歸一化泄露FxLMS 算法,收斂步長受到誤差信號的影響,同時也避免了因誤差信號過小而導致的步長過大問題;馬英博[5]改善變步長因子更新的方式是計算出誤差信號與輸入信號之間的相關性,再根據(jù)相關性更改步長的迭代;文獻[10]使得步長以指數(shù)函數(shù)變化;文獻[11]更改了步長因子的計算公式,使得算法在收斂初期步長小以實現(xiàn)算法的收斂,中期步長變大快速收斂,后期降低收斂因子提高收斂精度。
以上的改進變步長方式,都是根據(jù)消噪后的誤差信號來調節(jié)現(xiàn)有的步長,當噪音信號發(fā)生較大的波動時,系統(tǒng)不能根據(jù)噪音的波動立即調節(jié)系統(tǒng)的步長,而是等待系統(tǒng)降噪后的誤差反饋,忽略了噪音信號的一些特征[12]。實際上,在增加系統(tǒng)采樣率之后,噪音信號在時序上是具有相關性的,可以統(tǒng)計噪音信號的特征,實時地對變步長進行調節(jié)。
針對上述問題,本文在傳統(tǒng)變步長的基礎上,統(tǒng)計了已有的噪音信號信息,對已有的噪音信號進行多項式擬合,判斷出下一時刻的噪音波動情況,根據(jù)結合噪音的波動,對步長進行相應的調節(jié)。仿真結果表明,在相同的噪音環(huán)境下,達到相同的降噪信噪比時,根據(jù)噪音擬合所調節(jié)的變步長FxLMS 算法比常規(guī)變步長算法所需的迭代次數(shù)更少,魯棒性也更好。
經典的FxLMS 算法[13]結構框圖如圖1 所示。圖1 中,x(n)是噪聲源信號,在經過初級通道P(z)后,信號變成了d(n),S′(z)是次級通道估計函數(shù),噪音x(n)經過初級通道后,得到濾波參考信號f(n)。f(n)和e(n)作為控制器的輸入,經過濾波器W(z)后得到次級控制信號y(n)。y(n)在經過次級通道S(z)后,變成了次級信號Ys(n),隨后與d(n)相疊加,最終變成了誤差信號e(n)。此時的噪音將會削弱。
圖1 基于FxLMS 算法的前饋主動降噪控制系統(tǒng)框圖
具體的FxLMS 算法步驟如下:
(1)采集噪聲源信號x(n)和誤差信號e(n);
(2)計算出濾波器的輸出信號為:
其中,W(n)為濾波器參數(shù)。
(3)隨后該參數(shù)將得到更新:
式中,μ 是濾波器的調節(jié)步長,是一個固定的常數(shù)。
(4)輸出的誤差信號e(n)為:
(5)得到新的e(n)之后,回到步驟(1),隨后更新次級通道信號y(n)和濾波器系數(shù)W(n),直到最終的誤差信號達到最小值。
在FxLMS 算法中,影響算法的一個因素是步長μ 的選取,當步長μ 較大時,算法的收斂速度快,但是算法誤差e(n)相對會比較大[14],如果步長選擇得過大,系統(tǒng)會趨向于發(fā)散,那么FxLMS 算法將不起作用;如果選擇比較小的步長,算法的收斂速度將會變慢[15-16]。因此,有學者提出了變步長的思想,在算法收斂前期,步長較大;在誤差信號趨于穩(wěn)定后,采用小步長使得誤差信號趨向于一個更精確值。如馬英博[5]提出的變步長濾波最小均方算法(CFxLMS),它的步長公式為:
其中,α 為收斂因子,C(n)是參考信號x(n)和誤差信號e(n)的相關函數(shù),e2(n)是算法在迭代過程中所有的誤差平方和,β 是一個較小的正常量,防止誤差過小導致的步長失調。李雪蕊[10]提出算法步長按照指數(shù)減小,即:
其中,參數(shù)p 是比例系數(shù),誤差e(n)越大,步長μ(n)也越大;誤差較小時,步長也就變小。但是上面的步長算法在計算機計算步長時,涉及大量的積分運算或者指數(shù)運算,算法運行的復雜度將會提高,運算效率受到限制,實用性不強。可以根據(jù)誤差信號e(n)的大小以及x(n)信號的變化情況,計算出具體的步長公式,如令:
其中,α 為常數(shù),在變步長的更新公式中,變步長μ(n)僅僅受到誤差信號e(n)的影響。由于不涉及指數(shù)運算,因此算法的計算量大大減少。也可以將步長公式更改為分段函數(shù)形式,使得算法能夠兼顧速度與精度。
在傳統(tǒng)的FxLMS 算法中,默認的噪音輸入信號是不相關的,評價算法的優(yōu)缺點時,一般使用的是隨機噪音。但是在實際的應用中,聲音幅值信號大多是連續(xù)的,增加聲音信號的采樣率后,聲音幅值在時間上大多數(shù)具有相關性,并非完全獨立??梢越oFxLMS 結構上加一個噪音統(tǒng)計估計模塊,它的主要功能是對已有的噪音信號進行多項式擬合,然后根據(jù)多項式的變化,對下一時間的噪音信號進行預判,通過預判結果來調節(jié)FxLMS 算法的步長,使得算法能夠最快地收斂,最終得到最小誤差信號。這樣,在自適應電路工作時,可以根據(jù)噪音的變化與誤差信號的幅值對自適應算法進行實時調節(jié),更快地消除誤差信號。新提出的噪音統(tǒng)計預估調節(jié)FxLMS 步長算法框如圖2 所示,其中,新加的模塊為Q(z),它的輸入為誤差信號e(n)與輸入信號矩陣D=[d1d2d3… dn]?,F(xiàn)在將輸入的信號矩陣數(shù)據(jù)擬合,假設這個矩陣元素分別是多項式在自變量為[x1x2x3… xn]時的因變量,則多項式可表示為:
此時,可以將上面的矩陣化為標準型矩陣:
此時,輸入的數(shù)據(jù)可以擬合在多項式中:
其中,a、b、γ、δ等系數(shù)為確定常數(shù),均可通過已有的噪音信號計算出。當下一個時刻數(shù)據(jù)來臨之前,可以事先計算出曲線的下一狀態(tài)f(xn+1)以及f(xn+1)-f(xn)的值,根據(jù)f(xn+1)的變化幅度,對FxLMS 的步長進行調節(jié),以便更快地使算法收斂。圖2 中W(z)為一個8 階濾波器,濾波器的更新公式為:
圖2 改進的噪音統(tǒng)計補償FxLMS 算法框圖
式中,a 可以是確定的比例系數(shù),Δf(x)=f(xn+1)-f(xn),為噪音統(tǒng)計預估信號對下一時間的噪音信號預估變化量。即噪音信號x(n)的波動Δf(x)占x(n)的百分比對μ(n)進行調節(jié)。
本節(jié)通過仿真對比在相同噪音信號輸入情況下,傳統(tǒng)FxLMS 算法與經過信號統(tǒng)計分析后的FxLMS 算法的收斂性能。本實驗的噪音信號為1.6 kHz 的正弦波疊加隨機信號,噪音信號具體的公式為:
信號的采樣頻率為100 kHz。算法使用的8 階自適應濾波器,改進的步長函數(shù)為:
其中,k 為分段函數(shù)。具體取值為:
為了能夠直觀地反映ANC 系統(tǒng)的降噪性能,可以使用如下的公式定義:
其中,R 為信噪比系數(shù),反映了系統(tǒng)降噪性能。首先,在實驗中,使用了固定步長的方式來仿真系統(tǒng)的降噪效果,然后對比一下變步長的仿真結果,如圖3 所示。在圖中,點線、點畫線與直線依次是步長為μ(n)=0.000 01~0.000 21 的算法仿真結果,可以看到,定步長FxLMS 算法中,步長并非越大越好或者越小越好,步長越大,其收斂的誤差也就越大,同時如果步長過大,則系統(tǒng)會趨于發(fā)散;當步長變小時,算法收斂所花的時間將變長。如果降噪的步長過小,則步長的變化跟不上噪音信號的變化,此時自適應算法的性能變差。因此,可以統(tǒng)計噪音信號的一些特征,根據(jù)噪音信號的變化特征相應地調整步長。同時,變步長最小均方算法在迭代650 次之后,算法的降噪效果比定步長最小均方算法降噪幅度更好??梢娮儾介L最小均方算法相對于定步長最小均方算法,降噪效果更優(yōu)。
圖3 各步長FxLMS 算法仿真結果圖
由上面可知,F(xiàn)xLMS 算法的收斂步長與降噪的效果并不具有相關性,可以通過誤差信號的值與噪音信號的變化來調節(jié)步長,以達到快速收斂的效果。
普通的變步長FxLMS 算法的原理是步長大小受到誤差信號e(n)的影響,在新提出的算法中,步長不僅僅受到誤差信號e(n)的影響,還受到輸入信號波動影響。新提出算法的仿真結果如圖4 所示,常規(guī)變步長FxLMS 算法為虛線,僅僅通過誤差信號的反饋調節(jié)步長,實線是綜合誤差信號與噪音擬合補償模塊的輸出調節(jié)步長,這樣,在噪音信號發(fā)生變化時,步長也能夠及時調節(jié)到最適宜步長,這使得新變步長算法降噪速度更快,降噪效果更好。
圖4 常規(guī)變步長與新變步長FxLMS 降噪效果仿真對比
隨后,基于不同的噪音頻率數(shù)據(jù),對兩種變步長FxLMS算法進行仿真實驗,仿真結果如表1 所示。由表1 可知,新提出的算法在降噪深度達到10 dB 和35 dB 時,其迭代的運算次數(shù)均比普通變步長算法要少,在噪音信號包含不同的頻率信號時,新算法均能有效降噪并且比原算法降噪幅度更好。為了驗證新算法的魯棒性,可以設置噪音信號為:
表1 兩種變步長同等降噪效果迭代次數(shù)對比
此時噪音信號可以發(fā)生更大幅值的瞬時突變,可以檢測新的主動降噪系統(tǒng)對突變噪音降噪能力,即系統(tǒng)的魯棒性??梢杂缮媳淼贸?,新提出的主動降噪算法降噪迭代次數(shù)更少,即魯棒性優(yōu)于原變步長主動降噪系統(tǒng)。此時,新舊算法的降噪能力分別如圖5 和圖6 所示,對比兩種算法的仿真結果,可以注意到在相同的迭代次數(shù)情況下,新算法的殘余噪音e(n)幅值更小。
圖5 原變步長LMS 算法降噪效果圖
圖6 新變步長FxLMS 算法降噪效果圖
本文針對生活中產生噪音的場景,使用變步長FxLMS自適應算法對噪音信號進行降噪處理。針對傳統(tǒng)變步長算法降噪過程的特點,改進變步長方式。首次提出對現(xiàn)有的噪音數(shù)據(jù)進行數(shù)據(jù)的擬合,然后對下一時刻的信號進行預估,獲得信號變化量,結合變化量占噪音信號比例,對變步長FxLMS 步長進行相應的調整。隨后在MATLAB 上面,使用新舊變步長FxLMS 算法對相同的噪音數(shù)據(jù)進行降噪,發(fā)現(xiàn)提出的變步長算法分別在降噪深度達到10 dB、20 dB、30 dB 和35 dB 時,迭代的次數(shù)減少了4 次~60 次,迭代次數(shù)更少。此后,還增加了噪音隨機的突變值,在魯棒性方面,新算法降噪迭代次數(shù)更少,降噪更快也更穩(wěn)定。