崔婷玉,張 俊,黃薛龍
(1.蕪湖職業(yè)技術學院,安徽 蕪湖 241003;2.安徽華東光電技術研究所,安徽 蕪湖 241002;3.蕪湖市大數(shù)據(jù)與人工智能工程技術研究中心,安徽 蕪湖 241000)
汽車噪聲的來源包括發(fā)動機噪聲、傳動系噪聲、車身噪聲、輪胎噪聲、空氣噪聲等。發(fā)動機是汽車上的最主要噪聲源之一,其輻射的噪聲具有多分量、非平穩(wěn)、非高斯、非周期、非線性的特點[1]。CHAPLIN[2]將LMS濾波器應用在發(fā)動機排氣脈沖噪聲控制中,實現(xiàn)了18分貝的降噪效果。張立等[3]利用去相關NLMS自適應Volterra濾波器預測發(fā)動機運轉噪聲,可有效減小發(fā)動機運轉噪聲的干擾。甘慧萍等[4]提出一種基于Volterra級數(shù)的機械振動信號濾波方法,與線性自適應濾波算法相比,可有效地濾除機械振動信號所含的高斯噪聲和脈沖干擾。張家樹等[5]提出一種基于sigmoid函數(shù)的Volterra自適應有源噪聲對消器,對于噪聲及碼間串擾和非線性畸變具有良好的抗噪聲性能,但很大程度上增加了計算量。傳統(tǒng)的線性wiener濾波器對高斯噪聲的濾波有一定的效果,但對脈沖干擾不能進行有效的濾除[6]。非線性Volterra濾波器具有線性和非線性雙重特性,所以使用Volterra濾波器能夠表達大多數(shù)的非線性系統(tǒng)和全部線性系統(tǒng),對信號中的脈沖噪聲的濾波效果較好,但對高斯噪聲往往不能進行有效的濾除。發(fā)動機振動信號既包括高斯噪聲又含有脈沖噪聲,無論是線性wiener濾波器還是非線性Volterra濾波器都不能對發(fā)動機噪聲進行有效的濾除。
本文提出一種基于VLMP算法改進的變步長VLMP算法,首先,根據(jù)sigmoid函數(shù)[7]更新步長因子,再對一階和二階權系數(shù)采取分階迭代更新;然后利用本文算法對Volterra濾波器的核進行辨識,在辨識最優(yōu)核的同時對發(fā)動機噪聲進行降噪處理,將濾波的結果和線性濾波、VLMS濾波以及VLMP濾波方法的發(fā)動機噪聲降噪結果進行比較分析,仿真結果表明,本文算法對發(fā)動機噪聲中的高斯噪聲和脈沖噪聲成分具有較好的降噪能力。
二階Volterra濾波器的輸入信號為
(1)
濾波器權矢量為
(2)
d(n)為期望信號,濾波器輸出為
y(n)=WT(n)X(n).
(3)
誤差信號為
e(n)=d(n)-y(n).
(4)
WENG[8]提出的非線性Volterra-LMP算法(VLMP)的權值更新公式為
(5)
(6)
其中,wi(n)是Volterra濾波器線性部分權值,wi,j(n)為Volterra濾波器二次項部分權值,μ1=μ2為固定步長因子。
Volterra濾波器非線性項將穩(wěn)定分布的尖峰脈沖特性放大,導致輸入信號的自相關矩陣特征值擴展變大,從而使輸入信號相關性很強。一般情況,線性項部分和非線性部分收斂因子與各自的自相關矩陣有關,合理地選取收斂因子能很好地克服這個問題。固定的步長因子μ1,μ2取值較大時,每次迭代的權值(Volterra核值)的調整較大,迭代過程中波動也較大,但是達到穩(wěn)態(tài)階段的時間較短;固定步長因子取值較小時,權值的調整較小,迭代過程中波動也較小,但是達到穩(wěn)態(tài)階段的時間較長。為克服以上兩個問題,本文采用基于sigmoid函數(shù)[7]的變步長VLMP算法,其變步長公式如下:
(7)
其中,μ1(n),μ2(n)為基于sigmoid函數(shù)[7]的線性項和二次項部分變步長因子。
(8)
用w*表示真實的非線性系統(tǒng)權向量的值,定義均權值誤差向量ε(n)=E{w(n)-w*},根據(jù)文獻[8]得到隨機的差分方程:
ε(n+1)=[I-μD(p,α,γ)Rxx]ε(n)+μD(p,α,γ)(ξ-Rxxw*),
(9)
其中,ξ=E{x(n)d(n)},Rxx=E{x(n)x(n)T},差分方程解收斂當且僅當矩陣I-μD(p,α,γ)Rxx的所有特征值小于1[8]。本文算法使用變步長函數(shù)μ(n)代替VLMP算法的固定步長μ,可得變步長VLMP算法各參數(shù)收斂范圍為
可推出
得到
其中,λ1max和λ2max分別是x(n-i)和x(n-i)x(n-j)自相關矩陣的最大特征值。
可假設1
在噪聲信號為高斯噪聲背景情況下,設p=2,α=2,所以D(p,α,γ)=1,可得變步長VLMP算法p參數(shù)收斂范圍為1
可推出
其中,λ1max和λ2max分別是x(n-i)和x(n-i)x(n-j)自相關矩陣的最大特征值。這是本文提出的變步長VLMP算法在不同背景環(huán)境下的參數(shù)選取。
以FIR系統(tǒng)辨識模型為例(圖1),對本文算法進行仿真和性能分析[10-11]。
圖1 系統(tǒng)辨識原理框圖
非線性系統(tǒng)采用二階Volterra濾波系統(tǒng),二階非線性系統(tǒng)輸入和輸出關系為
(10)
這個系統(tǒng)中線性核和二階核分別為
ψ1=(-0.76,-1,1)T.
(11)
(12)
將算法用于高斯噪聲環(huán)境下非線性系統(tǒng)辨識,如圖1所示。本實驗中,非線性系統(tǒng)是一個記憶長度的二階Volterra非線性系統(tǒng),系統(tǒng)的期望信號為
(13)
輸入信號為
x(n)=x(n-1)+v2(n).
(14)
為檢驗高斯噪聲背景下本文算法性能,將本文算法與VLMP算法和DOVLMP算法[12]進行比較。其中,v1(n)是均值為0、方差為1的高斯噪聲。v2(n)是均值為0、方差為1的高斯白噪聲,且與v1(n)獨立。設定輸入的信噪比(SNR)為15 dB。經多次實驗,VLMP算法中最佳值為μ=0.02,p=1.1。DOVLMP算法中,μ1=0.05,μ2=0.008,p=1.1。本文算法中,α=0.005,β=8,p=1.1,所有仿真曲線都是通過100次獨立仿真結果取平均得到,三種算法曲線圖如圖2所示。
圖2 算法的學習曲線
由圖2可見,高斯噪聲背景環(huán)境下,VLMP算法學習曲線可以收斂到-7 dB,DOVLMP算法誤差學習曲線可以收斂到-8 dB,本文算法誤差學習曲線可以收斂到-11 dB;本文算法比VLMP算法穩(wěn)態(tài)誤差值要小4 dB左右,同時比DOVLMP算法穩(wěn)態(tài)誤差值要小3 dB左右。所以VLMP和DOVLMP算法擁有較高的穩(wěn)態(tài)失調量,本文算法的穩(wěn)態(tài)失調量較低。在收斂速度上,本文算法比DOVLMP算法快,但與VLMP算法收斂速度相當。
在仿真實驗中,三種算法系統(tǒng)核辨識結果如表1所示,VLMP算法的ωV為選取的一組VLMP算法權系數(shù)與真實值較接近一組值(迭代1 205次時的權系數(shù))。DOVLMP算法的ωD為選取的DOVLMP算法權系數(shù)值,本文算法的為ωc選取的本文算法權系數(shù)值,為增加算法的對比性,DOVLMP算法和本文算法的權系數(shù)也選取迭代1 205次時的值,表1是三種算法在同一時刻核辨識結果。
表1 三種算法核辨識結果
表1中,VLMP算法核辨識結果與真實值的誤差范圍為0.025 4 將算法應用在α穩(wěn)定分布噪聲背景下的非線性系統(tǒng)辨識,非線性系統(tǒng)是一個記憶長度N=3的二階Volterra非線性系統(tǒng),二階非線性系統(tǒng)的期望信號為 (15) (16) 在實驗仿真1中,為檢驗高斯噪聲背景下本文算法性能,下面將本文算法與VLMP算法、DOVLMP算法進行比較。VLMP算法參數(shù)的值均取其達到最優(yōu)性能時的參數(shù)值,其中,p=1.2。圖3(a)(b)是在特征指數(shù)α=1.9時,VLMP算法、DOVLMP算法和本文算法的權系數(shù)誤差范數(shù)曲線,是三種算法的MATLAB仿真結果。圖3(a)中,VLMP算法權系數(shù)誤差最小時,另外兩種算法也取相同的權系數(shù)誤差。其中,VLMP算法參數(shù)最優(yōu)取值為μ=0.002,p=1.2;DOVLMP算法參數(shù)最優(yōu)取值為μ1=0.002,μ2=0.003,p=1.2;本文算法的參數(shù)取值為,α=0.01,β=2,p=1.2,圖3(b)中,VLMP算法權系數(shù)收斂速度最快時,另外兩種算法也取相同的收斂速度。其中,VLMP算法參數(shù)最優(yōu)取值為μ=0.006,p=1.2;DOVLMP算法參數(shù)最優(yōu)取值為μ1=0.006,μ2=0.008,p=1.2;本文算法的參數(shù)取值為α=0.01,β=2,p=1.2。 (a)穩(wěn)態(tài)誤差相同時收斂速度曲線 (b)收斂速度相同時穩(wěn)態(tài)誤差曲線圖3 α為1.9時穩(wěn)態(tài)誤差和收斂速度比較 由圖3(a)可見,當三種算法權系數(shù)誤差值相同時,本文算法在迭代次數(shù)1 000次左右到達穩(wěn)態(tài)進程,DOVLMP算法在迭代次數(shù)1 700次左右到達穩(wěn)態(tài)進程,VLMP算法在迭代次數(shù)2 000次左右到達穩(wěn)態(tài)進程,相同的穩(wěn)態(tài)失調量情況下,本文算法的收斂速率更快。 由圖3(b)可見,三種算法曲線收斂速率相同時,本文算法的穩(wěn)態(tài)誤差值可達到-30 dB左右,DOVLMP算法和VLMP算法穩(wěn)態(tài)誤差值均達到-20 dB左右,相同的收斂速率下,本文比DOVLMP算法和VLMP算法的穩(wěn)態(tài)誤差值小10 dB左右,所以本文算法穩(wěn)態(tài)失調量最小。 在實驗仿真2中,脈沖噪聲背景下通過VLMP算法和本文算法對非線性系統(tǒng)進行辨識。在特征指數(shù)α=1.25時,信噪比為10 dB的α穩(wěn)定分布噪聲背景,輸入信號為高斯白噪聲信號,輸入信號和脈沖噪聲信號如圖4(a)所示。VLMP算法p的取值為p=1.2,步長因子最優(yōu)為μ=0.01,本文算法取值為p=1.2,α=100,β=0.05,兩種算法的核誤差曲線圖如圖4(b)所示。 由圖4(b)可以看出,本文算法線性核誤差h1在迭代180次左右達到收斂,非線性核誤差h2在迭代250次左右達到收斂,VLMP算法線性核誤差h1在迭代330次左右達到收斂,非線性核誤差h2在迭代410次左右達到收斂,本文算法線性核和非線性核的學習曲線收斂速度均比VLMP算法快。兩種算法的線性核誤差值均小于二階項核誤差值。究其原因,是由于二階項相關矩陣的特征值擴展要大于線性項。 (a)輸入信號和脈沖噪聲(α為1.25,信噪比為10 dB) (b)算法的學習曲線圖4 脈沖噪聲背景下算法學習曲線比較 為檢驗本文算法對發(fā)動機噪聲的降噪效果,仿真實驗采用原始發(fā)動機噪聲,見圖5(e),分別對基于LMS算法的wiener濾波器、Volterra濾波器和基于LMP算法的Volterra濾波器以及基于本文算法的Volterra濾波器的降噪效果進行實驗驗證,經多次實驗,LMS算法步長因子取最優(yōu)值μ=0.1;VLMS算法線性項和二階項步長因子均取最優(yōu)值μ=2,參數(shù)p=1.2;VLMP算法線性項和二階項步長因子均取最優(yōu)值μ=0.2,參考文獻[8]參數(shù)p=1.2;本文算法線性項和二階項步長因子均取變步長,其中,參數(shù)α=100,β=1,為保證其他條件相同,參數(shù)p=1.2?;贚MS算法、VLMS算法、VLMP算法、本文算法對發(fā)動機噪聲進行自適應濾波降噪效果如圖5所示,表2是四種算法構成的濾波器對車內發(fā)動機噪聲濾波后的降噪效果指標計算結果。 (a)基于LMS濾波殘余噪聲(b)基于VLMS濾波殘余噪聲 (c)基于VLMP濾波殘余噪聲 (d)基于本文算法濾波殘余噪聲 (e)發(fā)動機振動噪聲圖5 發(fā)動機噪聲濾波降噪效果比較 表2 降噪的效果指標計算結果 圖5(a)至(e)中,橫坐標表示迭代次數(shù),縱坐標表示幅度。由圖5和表2可以看出,Volterra濾波器的殘余誤差的收斂速度明顯比wiener濾波器快,發(fā)動機噪聲經過本文算法濾波后的均方根誤差值最小,可得Volterra濾波器的降噪效果明顯好于wiener濾波器,本文算法的降噪效果優(yōu)于VLMS濾波器和VLMP濾波器,本文算法適用于發(fā)動機噪聲的降噪。 本文針對發(fā)動機噪聲的降噪問題,提出了一種在高斯噪聲環(huán)境以及脈沖干擾環(huán)境下變步長VLMP算法,該算法利用sigmoid函數(shù)更新步長因子,然后對一階和二階權系數(shù)迭代更新。仿真實驗表明,本文算法構成的Volterra濾波器較其他常用的濾波算法具有更好的濾波效果,能同時對發(fā)動機噪聲中的高斯噪聲和脈沖干擾進行降噪。下一步研究需要在計算復雜度方面進行改進,減小計算量。2.2 α穩(wěn)定分布噪聲背景
3 發(fā)動機振動噪聲消噪仿真分析
4 結語