仝喜峰, 陳衛(wèi)松, 錢隆彥
(安徽師范大學(xué) 物理與電子信息學(xué)院,安徽 蕪湖 241000)
由于脈沖噪聲的沖擊特性,自適應(yīng)算法在脈沖噪聲環(huán)境下的魯棒性尤為重要[1,2]。脈沖噪聲不符合高斯分布特性,信號(hào)在時(shí)域上分布著大量的尖峰脈沖(沖擊信號(hào)),其統(tǒng)計(jì)特性就表現(xiàn)為較厚的概率密度函數(shù)拖尾。針對(duì)脈沖噪聲,通常利用標(biāo)準(zhǔn)對(duì)稱穩(wěn)態(tài)分布來(lái)建模[2],只有階數(shù)小于α的分?jǐn)?shù)低階矩是有限的(α為特征指數(shù),直接決定α穩(wěn)態(tài)分布的概率密度函數(shù)拖尾厚度),由于不存在有界的二階矩,線性控制算法在脈沖噪聲控制中的性能顯著降低,一些非線性的濾波算法受到關(guān)注。
另一方面,由于設(shè)備的非線性特性及次級(jí)通道的非線性失真現(xiàn)象的存在,線性控制算法表現(xiàn)不佳,甚至無(wú)法收斂。為了提高線性控制算法在非線性噪聲控制中的性能,Tan L和Jiang J提出了基于Volterra級(jí)數(shù)的非線性VFxLMS算法[3,4],相比于線性FxLMS算法,VFxLMS算法可以解決算法無(wú)法收斂的問(wèn)題,但降噪效果不夠好。為了保證非線性控制算法的穩(wěn)定性,Leahy R等人發(fā)現(xiàn)脈沖噪聲存在有限的分?jǐn)?shù)低階矩,提出的FxLMP算法被用于脈沖噪聲控制,具有較好的收斂效果,不足之處在于需要脈沖噪聲的先驗(yàn)知識(shí)[5]。Wu L等人指出α穩(wěn)態(tài)分布的脈沖噪聲的對(duì)數(shù)階矩是有限的,脈沖噪聲經(jīng)過(guò)對(duì)數(shù)變換后接近于高斯分布,提出了一種基于對(duì)數(shù)變換FxlogLMS算法,該算法對(duì)脈沖噪聲更具魯棒性,并且不需要噪聲的先驗(yàn)知識(shí)[6];但該方法存在權(quán)重更新死區(qū)的缺點(diǎn),因此實(shí)用性較低。最近,Lu L等人提出了一種基于Volterra擴(kuò)展模型(VFxlogLMP)的非線性自適應(yīng)算法[7],VFxlogLMP算法可以有效地解決FxlogLMS算法的濾波器更新死區(qū)弊端,并可以取得更好的收斂速度和降噪效果,但算法仍然需要噪聲信號(hào)的先驗(yàn)知識(shí),并且該算法計(jì)算量相對(duì)較大。
本文采用一種S型非線性函數(shù)對(duì)誤差信號(hào)進(jìn)行預(yù)處理,從而達(dá)到控制沖擊信號(hào)的目的,確保算法的穩(wěn)定性,在此基礎(chǔ)上將變步長(zhǎng)算法思想引入到非線性濾波算法中。仿真分析結(jié)果表明,該算法在不需要噪聲先驗(yàn)知識(shí)的情況下,實(shí)現(xiàn)對(duì)脈沖噪聲的控制,且不存在濾波器權(quán)值更新死區(qū)。
Volterra濾波器可以很好地模擬非線性系統(tǒng),對(duì)于各種高階內(nèi)核或脈沖響應(yīng),其輸出仍然為線性。通過(guò)使用Volterra級(jí)數(shù)擴(kuò)展,自適應(yīng)非線性控制器的輸出y(n)表示為
(1)
式中N為自適應(yīng)Volterra濾波器的存儲(chǔ)長(zhǎng)度,hr(m1,…,mr),r=1,…,R為濾波器的第r階核,這里選用二階Volterra非線性濾波器,其輸入信號(hào)可表示為
X(n)=[x(n),x(n-1),…,x(n-N+1),
x2(n),…,x2(n-N+1)]T
(2)
濾波器的權(quán)重矢量為
W(n)=[h1(n),…,h1(N-1),h2(0,0),…,
h2(N-1,N-1)]T
=[w1(n),w2(n),…,wN-1(n)]T
(3)
式中d(n)為期望信號(hào),濾波器的輸出和誤差信號(hào)分別為
y(n)=XT(n)W(n),e(n)=d(n)-y(n)
(4)
Wu基于α穩(wěn)沖噪聲的對(duì)數(shù)階矩有限,提出了FxlogLMS算法,濾波器的系數(shù)更新規(guī)則為[6]
(5)
為了克服FxlogLMS算法存在濾波器更新死區(qū)的弊端,Lu提出了基于Volterra級(jí)數(shù)的VFxlogLMP算法。修改之后的濾波器系數(shù)更新方程[7]
(6)
FxlogLMS算法和VFxlogLMP算法分別依據(jù)脈沖信號(hào)具有有限分?jǐn)?shù)低階矩和對(duì)數(shù)階矩,控制了較大幅值的誤差信號(hào)對(duì)自適應(yīng)濾波器權(quán)值更新的影響。上述兩種算法均可以用一般表達(dá)式表示為
W(n+1)=W(n)-μg(n)x′(n)
(7)
式中g(shù)(n)為與誤差信號(hào)e(n)相關(guān)的權(quán)值更新函數(shù)。
S型激活函數(shù)是一個(gè)非線性連續(xù)函數(shù),函數(shù)曲線形如“S”,其中S型激活函數(shù)的表達(dá)式為
(8)
式中S(x)為一單調(diào)奇對(duì)稱的有界函數(shù),本文將S型激活函數(shù)的單調(diào)有界特性引入到脈沖噪聲控制算法中,定義代價(jià)函數(shù)為
(9)
因此,VFxBSLMS算法的權(quán)重矢量的更新表達(dá)式為
(10)
式中μ為步長(zhǎng)因子,β為非線性壓縮系數(shù),且μ>0,β>0圖1為不同β值下的非線性壓縮函數(shù)曲線,從圖中可以看出隨著e(n)增大,g(n)值逐漸減小,這保障了在較大幅值e(n)下算法的穩(wěn)定。β越大,g(n)對(duì)誤差信號(hào)的壓縮越劇烈。但β值選取并不是越大越好,對(duì)e(n)的過(guò)度壓縮有可能會(huì)降低算法的收斂速度。
二階Volterra濾波器的線性部分權(quán)值及二次項(xiàng)部分權(quán)值分別用wi(n)和wi,j(n)表示。Volterra濾波器非線性項(xiàng)將穩(wěn)定分布的尖峰特性放大,導(dǎo)致輸入信號(hào)的自相關(guān)矩陣特征值擴(kuò)展變大,使輸入信號(hào)相關(guān)性很強(qiáng)。為克服輸入信號(hào)的強(qiáng)相關(guān)性以及固定步長(zhǎng)對(duì)算法收斂帶來(lái)的影響,本文采用基于Sigmoid函數(shù)[9]的變步長(zhǎng)算法,其變步長(zhǎng)公式為
μ1=μ2=σ[1/(1+exp(-λ|e(n)|))-0.5]
(11)
式中μ1(n),μ2(n)為基于Sigmoid函數(shù)的線性項(xiàng)和二次項(xiàng)的變步長(zhǎng)因子。
考慮到誤差信號(hào)中仍然存在大量的沖擊信號(hào),為了進(jìn)一步地降低強(qiáng)脈沖信號(hào)對(duì)濾波器權(quán)值更新穩(wěn)定性的影響,本文增加誤差信號(hào)預(yù)處理環(huán)節(jié)??紤]到算法的適用性,在預(yù)處理函數(shù)的設(shè)置上體現(xiàn)出“動(dòng)態(tài)”變化的特性。定義信號(hào)預(yù)處理函數(shù)表達(dá)式為
(12)
式中c(i)為誤差信號(hào)的在線統(tǒng)計(jì)平均,i為信號(hào)樣本數(shù)。
以圖2所示的FIR系統(tǒng)辨識(shí)模型為例,對(duì)本文算法進(jìn)行仿真和性能分析[10]。
圖2 系統(tǒng)辨識(shí)原理框圖
設(shè)非線性系統(tǒng)是一個(gè)記憶長(zhǎng)度N=3的二階Volterra濾波系統(tǒng),二階非線性系統(tǒng)的期望信號(hào)為
d(n)=-0.76x-x1+x2+0.5x2+2·x·x2-
(13)
由于脈沖噪聲的二階矩不存在,因此利用平均殘余誤差A(yù)NR(Averaged Noise Reduction)來(lái)進(jìn)行性能比較[11],其定義為
(14)
選取FxlogLMS、VFxlogLMP算進(jìn)行比較,每種算法的最優(yōu)步長(zhǎng)通過(guò)實(shí)驗(yàn)的方式進(jìn)行確定。圖3為三種算法在脈沖噪聲強(qiáng)度分別為α=1.2(圖3(a)),α=1.5(圖3(b)),α=1.8(圖3(c))的環(huán)境下的降噪性能比較。
圖3 三種算法的平均殘余誤差A(yù)NR對(duì)比
從圖3(a)可見(jiàn),當(dāng)α=1.2(較強(qiáng)脈沖噪聲背景)時(shí),FxlogLMS算法相比較其他兩種算法,平均殘余誤差的絕對(duì)值要小5~8 dB;VFxlogLMP算法和VFxBSLMS算法都可以取得比較理想的降噪效果,但VFxBSLMS算法在迭代2 500次左右就已經(jīng)達(dá)到了收斂狀態(tài),而VFxlogLMP算法則要到4 800次才能完成,前者收斂速度明顯較優(yōu)。由于脈沖強(qiáng)度太大,三種算法在迭代過(guò)程中都不同程度上受到較高脈沖樣本的干擾。由圖3(b)和圖3(c)可見(jiàn),當(dāng)α=1.5及α=1.8(脈沖強(qiáng)度較弱)時(shí),三種算法對(duì)較弱的脈沖噪聲環(huán)境都可以表現(xiàn)很好的魯棒性。從不同噪聲環(huán)境下三種算法的表現(xiàn)上來(lái)看,VFxBSLMS算法在算法收斂速度以及降噪效果上均優(yōu)于FxlogLMS算法,在降噪效果上VFxBSLMS算法和VFxlogLMP算法都可以達(dá)到最高20 dB的降噪量,但收斂速度上VFxBSLMS算法仍然優(yōu)于VFxlogLMP算法。
使用權(quán)系數(shù)誤差范數(shù)對(duì)算法性能進(jìn)行進(jìn)一步的分析,所有仿真曲線都是通過(guò)20次獨(dú)立仿真結(jié)果取平均得到
(15)
圖4(a)是VFxlogLMP和VFxBSLMS算法在α=1.2時(shí)的權(quán)系數(shù)誤差范數(shù)對(duì)比圖,兩種算法的誤差曲線均可收斂到-20 dB,但在收斂速度上本文算法要遠(yuǎn)快于VFxlogLMP算法。
由圖4(b)可以看出VFxBSLMS算法線性核誤差(h1)及非線性核誤差(h2)幾乎同時(shí)在迭代450次左右達(dá)到收斂,而VFxlogLMP算法的線性核非線性核誤差則要到1 600次才能達(dá)到收斂狀態(tài)。兩種算法的線性核誤差值均小于二階項(xiàng)核誤差值,這是因?yàn)閂olterra級(jí)數(shù)二階項(xiàng)相關(guān)矩陣的特征值大于線性項(xiàng)。由于在圖3(a),(c)已經(jīng)表明FxlogLMS算法在收斂效果上低于VFxBSLMS及VFxlogLMP算法,本文不再對(duì)其進(jìn)行權(quán)系數(shù)誤差范數(shù)以及Volterra濾波器核誤差的對(duì)比分析。
圖4 α=1.2時(shí)算法性能比較
從圖5(a)可以看出,當(dāng)脈沖噪聲強(qiáng)度較大(α=1.5)時(shí),在迭代500次后,VFxBSLMS算法的噪聲幅值穩(wěn)定在6 dB以內(nèi),當(dāng)?shù)^(guò)1 500次后穩(wěn)定在2 dB內(nèi)。而其他兩種算法則在3~20 dB之間。當(dāng)脈沖強(qiáng)度較小(α=1.8)時(shí),在噪聲衰減量上,VFxBSLMS算法的優(yōu)勢(shì)已經(jīng)并不夠明顯,其主要原因是α=1.8時(shí)的噪聲已經(jīng)接近于高斯分布。在收斂速度上,本文算法噪聲在迭代500次左右便呈現(xiàn)濾波完成狀態(tài),而其他兩種算法則分別需要迭代1 300次和2 000次才能完成脈沖噪聲濾波。
圖5 不同算法的濾波效果對(duì)比
(從左至右分別為噪聲信號(hào)、FxlogLMS算法、VFxlogLMP算法、VFxBSLMS算法)
仿真實(shí)驗(yàn)表明:本文算法構(gòu)成的Volterra濾波器可以獲得較快的收斂速度,并且不需要噪聲信號(hào)的先驗(yàn)知識(shí),適用環(huán)境較為靈活。由于本文引入變步長(zhǎng)算法思想來(lái)進(jìn)行步長(zhǎng)更新,雖然提高了算法的收斂速度,一定程度上提高了算法的計(jì)算量負(fù)載,在進(jìn)一步的研究中仍需不斷改進(jìn),進(jìn)一步減小計(jì)算量。