摘 要: 濾波是濾除信號中某些特定頻率的波形的技術(shù),在數(shù)字信號處理中,主要用于濾除噪聲和干擾信號。由于噪聲和干擾信號的不確定性,采用固定濾波系數(shù)的數(shù)字濾波器無法達(dá)到最佳的效果。自適應(yīng)濾波器能夠隨著環(huán)境的改變而改動濾波器自身的參數(shù)和結(jié)構(gòu),從而能夠隨著噪聲和干擾信號的不斷變化修正濾波器的參數(shù)和結(jié)構(gòu),最終實現(xiàn)較理想的濾波。本文研究了最小均方差(LMS)算法,并結(jié)合自適應(yīng)濾波器的結(jié)構(gòu)和原理,設(shè)計出FIR結(jié)構(gòu)自適應(yīng)濾波器。最后給出MATLAB仿真結(jié)果,并利用DSP驗證自適應(yīng)濾波器的性能。
關(guān)鍵詞: 自適應(yīng)濾波器;MATLAB;LMS算法;FIR濾波器;DSP
0 引言
濾波即濾除信號中的噪聲和干擾信號,提取有用信號的技術(shù)。濾波技術(shù)廣泛應(yīng)用于信號處理和信號分析中。在信號的獲取和傳輸過程中出現(xiàn)的噪聲,以及信號處理過程中的干擾信號都需要通過濾波技術(shù)濾除,來保證信號的安全性和可靠性。例如,實現(xiàn)雷達(dá)跟蹤功能需要獲取大量的船舶方位數(shù)據(jù),在獲取數(shù)據(jù)的過程中,會產(chǎn)生大量的隨機(jī)干擾和測量誤差。因此,為了準(zhǔn)確地獲取船舶瞬時的位置、加速度和速度等,需要利用濾波,將誤差和隨機(jī)干擾濾除,濾波技術(shù)在雷達(dá)跟蹤功能實現(xiàn)中起到非常重要的作用。濾波器是一種允許特定頻率信號通過的選頻裝置,通過這種裝置獲取有用的信號,濾除雜波。從最初的維納濾波到后來的卡爾曼濾波,濾波器的實現(xiàn)有了很大的發(fā)展,隨著技術(shù)的進(jìn)步和社會的發(fā)展,需要處理的信號越來越復(fù)雜,要求實現(xiàn)的精度越來越高,同時對濾波器的要求也越來越高,其應(yīng)用范圍進(jìn)一步得到拓展。隨著濾波器的應(yīng)用環(huán)境不斷復(fù)雜化,對非線性的濾波技術(shù)研究得到進(jìn)一步的發(fā)展。因此,自適應(yīng)濾波器重新得到國內(nèi)外研究者關(guān)注。自適應(yīng)濾波器具有自我修正和跟蹤的特點,主要適用于隨機(jī)性噪聲和干擾濾除。本文在自適應(yīng)濾波器的原理和算法的基礎(chǔ)上,利用MATLAB和DSP軟件仿真環(huán)境設(shè)計實現(xiàn)自適應(yīng)濾波的最優(yōu)濾波。
1 自適應(yīng)濾波器原理與結(jié)構(gòu)
1.1 自適應(yīng)濾波原理
自適應(yīng)濾波即濾波器的參數(shù)可以自我調(diào)節(jié),可以利用前一時刻的結(jié)果作為當(dāng)前時刻濾波器的參數(shù)改變的依據(jù),由此可以適應(yīng)具有隨機(jī)噪聲和隨時間變化的干擾信號的應(yīng)用環(huán)境。就像生物能以各種有效的方式適應(yīng)生存環(huán)境一樣。自適應(yīng)濾波器是一種具有反饋作用的閉環(huán)設(shè)置,它是一種特殊形式的維納濾波器,可以通過反饋信息調(diào)節(jié)自身參數(shù)達(dá)到最優(yōu)濾波。自適應(yīng)濾波器沒有復(fù)雜計算,實時性強(qiáng),不需要已知輸入信號,也可以對信號進(jìn)行有效濾波。因此對于無法預(yù)知的信號固定濾波系數(shù)的傳統(tǒng)濾波器無法濾除的雜波和噪聲,自適應(yīng)濾波器可以簡單快速地輸出理想期望信號。利用數(shù)字濾波器對噪聲和干擾的最佳估計將輸入信號中混有的干擾濾除,將目標(biāo)信號與噪聲和干擾信號有效地分離。隨著自適應(yīng)濾波技術(shù)的發(fā)展,其在電信、雷達(dá)、聲吶、實時控制以及圖像處理等領(lǐng)域都有廣泛應(yīng)用。
1.2 自適應(yīng)濾波器的結(jié)構(gòu)
自適應(yīng)濾波器主要由數(shù)字濾波器和自適應(yīng)算法兩部分構(gòu)成[1],其中,數(shù)字濾波器的系數(shù)可以調(diào)節(jié),而自適應(yīng)算法的作用就是調(diào)節(jié)和修正自適應(yīng)濾波器的系數(shù)。如圖1所示。圖中自適應(yīng)濾波器有x(n)和z(n)兩個輸入端,其中z(n)是包含目標(biāo)信號s(n)和噪聲d(n)的輸入信號,s(n)和d(n)是不相關(guān)的兩個信號,x(n)是與噪聲d(n)有某種聯(lián)系的z(n)的一種度量信號。y(n)可以通過數(shù)字信號濾波器得到,然后可以通過公式e(n)=z(n)-y(n)=s(n)+d(n)-y(n)得到誤差信號e(n)。通過e(n)得到s(n)的最佳估計信號,而自適應(yīng)濾波器的基本原理就是利用系數(shù)可調(diào)的數(shù)字濾波器將雜波和噪聲從信號中濾除。
由圖1自適應(yīng)濾波器結(jié)構(gòu)可知,基于濾波系數(shù)可調(diào)的要求,對于數(shù)字濾波器的選擇包括有限長沖激響應(yīng)濾波器(FIR)和無限長沖激響應(yīng)濾波器(IIR)兩種數(shù)字濾波器可選擇。FIR型濾波器優(yōu)勢明顯,它的系統(tǒng)更穩(wěn)定,可以利用它實現(xiàn)多通帶濾波器,同時它更容易實現(xiàn)線性相位[2]。IIR濾波器可以用更低的階數(shù)實現(xiàn)與FIR相同的阻帶衰減效果,但鑒于FIR易實現(xiàn)嚴(yán)格的線性相位、穩(wěn)定性和任意的幅頻特性等優(yōu)點,另外FIR還有便于用DSP實現(xiàn)的優(yōu)勢,可以用節(jié)省存儲空間的立即數(shù)乘加完成編程,因此本文的設(shè)計中自適應(yīng)數(shù)字濾波器部分采用FIR濾波器橫向結(jié)構(gòu)。圖2所示為FIR橫向濾波器結(jié)構(gòu)圖。
2 自適應(yīng)濾波算法
2.1 LMS自適應(yīng)濾波算法
Widrow和Hoff提出的最小均方差(LMS)算法在實踐中被廣泛應(yīng)用,其具有計算量小和易于實現(xiàn)的特點[3]。自適應(yīng)算法通常由三大重要的技術(shù)指標(biāo)來衡量其優(yōu)劣:時變系統(tǒng)隨參數(shù)變化導(dǎo)致系統(tǒng)特性變化的檢測能力、輸出信號收斂到期望信號的速度以及對系統(tǒng)穩(wěn)定性的調(diào)節(jié)能力。自適應(yīng)濾波器實現(xiàn)功能的關(guān)鍵是尋找出均方誤差最小時濾波器權(quán)系數(shù)Wi的值,整個過程中利用ε和各x(n)的值,再根據(jù)上述的條件,通過算法找出Wi的值,實現(xiàn)自動調(diào)節(jié)Wi值的濾波器。所有的濾波器系數(shù)調(diào)整算法都是設(shè)法使輸出y(n)和目標(biāo)信號d(n)之差 e(n)的均方值最小化,并且根據(jù)這個判據(jù)來修改權(quán)系數(shù)。均方誤差ε表示為:
其中:R=E[X(n)XT(n)]為N×N的自相關(guān)矩陣,它是輸入信號采樣值間的相關(guān)性矩陣。P=E[d(n)X(n)]為N×1互相關(guān)矢量,代表理想信號d(n)與輸入矢量的相關(guān)性。
由式(4)可知,自適應(yīng)濾波器的權(quán)系數(shù)與濾波器的抽頭系數(shù)相關(guān)聯(lián),可以根據(jù)已知的矩陣R和矢量P以及抽頭系數(shù)的二次函數(shù)方程式求得W的解。根據(jù)二次函數(shù)曲線具有唯一最小函數(shù)值的性質(zhì),可以得出濾波器輸出誤差函數(shù)具有最小值即濾波得到最優(yōu)效果,在數(shù)學(xué)上可以利用梯度法求得此最小值,為了簡單起見,設(shè)W是一維的,則E[e2(n)]與W的關(guān)系成為一個拋物線。如圖3中在W*點獲得最小均方誤差。根據(jù)遞推關(guān)系式,利用梯度矢量法計算出拋物曲面的最低點。而自適應(yīng)的過程就是在梯度矢量的負(fù)方向上逐漸校正濾波器系數(shù),調(diào)節(jié)加權(quán)系數(shù)W使均方誤差最小,相當(dāng)于沿超拋物形曲面下降到最小值,獲得最佳濾波或準(zhǔn)最優(yōu)工作狀態(tài)。
實際上,自適應(yīng)濾波與維納濾波最主要的差別就是自適應(yīng)濾波增加了一個可以識別控制濾波器系數(shù)的部分,可以根據(jù)期望輸出信號與濾波器實際輸出信號的比較,用誤差函數(shù)值去控制和調(diào)整濾波器系數(shù)直至誤差達(dá)到最小值。也正因如此,找到一個能求得加權(quán)系數(shù),直至W=W*,E[e2(n)]=min的遞推式是LMS算法的核心。
2.2 RLS自適應(yīng)濾波算法
另外一種區(qū)別于LMS算法的具有較快收斂速度的自適應(yīng)算法即RLS,但是它存在實時性差的缺點,限制了其應(yīng)用。RLS自適應(yīng)濾波器的最佳濾波權(quán)系數(shù)需要用輸入信號自相關(guān)矩陣的逆來求得[4]。針對RLS算法計算復(fù)雜、實時性差但收斂于期望信號的速度比較快的特性,只要加以改進(jìn)就能使其得到很好的應(yīng)用,因此人們提出了改進(jìn)的RLS算法,即變換域自適應(yīng)濾波算法。
2.3 變換域自適應(yīng)濾波算法
對于某些強(qiáng)相關(guān)的信號或難以濾除的信號,利用變換域的思想可以將目標(biāo)信號輕松地分離出來,變換域可以輕松解決時域疑難問題,頻域變換、小波變換都屬于變換域。1979年Dentino首次將變換域的思想應(yīng)用在自適應(yīng)濾波上,對變換域自適應(yīng)濾波算法做了全面的總結(jié)和解釋。變換域自適應(yīng)濾波算法就通過正交變換把時域信號轉(zhuǎn)變?yōu)轭l域或小波域等信號,用歸一化的能量平方根來表示變換后的信號,然后結(jié)合自適應(yīng)算法進(jìn)行濾波。隨著技術(shù)的不斷發(fā)展,變換域自適應(yīng)濾波算法不斷得到推廣。由于LMS算法是依賴于輸入信號求其收斂性,所以針對強(qiáng)相關(guān)的信號,LMS自適應(yīng)濾波的效果大大降低[5]。基于對以上三種自適應(yīng)算法的研究,本文主要針對LMS自適應(yīng)算法對其進(jìn)行MATLAB與DSP設(shè)計與實現(xiàn)。
3 自適應(yīng)濾波器的仿真實現(xiàn)
3.1 FIR濾波算法MATLAB仿真實現(xiàn)
MATLAB能方便地以書寫計算公式的思維方式對所要實現(xiàn)的功能編程,具有強(qiáng)大的語言功能,在數(shù)字信號處理方面具有很大的優(yōu)勢。另外,MATLAB具有很多封裝完整的可供用戶使用的開源數(shù)據(jù)和工具箱,如系統(tǒng)辨識工具箱、神經(jīng)網(wǎng)絡(luò)工具箱、信號處理工具箱、模糊推理系統(tǒng)工具箱等。圖形、數(shù)學(xué)、編程還可以通過Simulink模塊來實現(xiàn),可將自己建好的模型打包成塊,以后便可以直接調(diào)用,非常方便。它還提供了與Windows編程相結(jié)合的矩陣運算、圖形繪制、數(shù)據(jù)處理和圖形處理等工具,在自動控制、圖像信號處理、雷達(dá)工程、信號分析、優(yōu)化設(shè)計等領(lǐng)域得到了廣泛應(yīng)用[6]。
自適應(yīng)LMS算法可以用MATLAB方便地實現(xiàn)。自適應(yīng)LMS算法的原理是利用最陡下降法以及時間n=0的濾波系數(shù)矢量和任意的起始值W(0)通過迭代公式更新濾波器權(quán)系數(shù)W(n),其具體方法如下:
?。?)求得誤差信號e(n):e(n)=d(n)-x(n),其中 d(n)為濾波器期望輸出信號,x(n)為濾波器輸入信號。
?。?)求濾波器系數(shù)。利用如下遞推公式更新矢量值:
w(n)=w(n-1)+2*e(n)*x(n)
其中為收斂因子。
(3)從時間參數(shù)n=0開始遞增加1,求誤差信號,重復(fù)上述計算直到求得最小均方誤差實現(xiàn)最優(yōu)濾波為止。
LMS的核心算法如下:
function[yn,W,en]=LMS(xn,dn,M,mu,itr)
en=zeros(itr,1);
W=zeros(M,itr);
for k=M:itr
x=xn(k:-1:k-M+1);
y=W(:,k-1).′*x;
en(k)=dn(k)-y;
W(:,k)=W(:,k-1)+2*mu*en(k)*xn(k);
end
yn=inf*ones(size(xn));
for k=M:length(xn)
x=xn(k:-1:k-M+1);
yn(k)=W(:,end).′*x;
end
通過實驗產(chǎn)生輸入信號x(n),期望信號為d(n),兩者相減得到誤差信號e(n),然后通過調(diào)用LMS算法從寬甸信號中提取單頻信號,實驗結(jié)果如圖4、圖5所示,進(jìn)一步調(diào)整收斂因子,觀察結(jié)果變化發(fā)現(xiàn),收斂因子越大,濾波器的抽頭數(shù)越多,期望信號能以更快的速度收斂到輸出信號,同時也存在穩(wěn)態(tài)誤差越大的風(fēng)險,所以應(yīng)選用合適的收斂因子和濾波器階數(shù),在收斂速度和誤差穩(wěn)態(tài)范圍上得到權(quán)衡。
3.2 自適應(yīng)濾波器DSP設(shè)計實現(xiàn)
通過MATLAB的仿真實驗,LMS自適應(yīng)濾波器的濾波特性得到驗證,接下來用TMS320C6713設(shè)計實現(xiàn)LMS自適應(yīng)濾波器。本文設(shè)計實現(xiàn)的是應(yīng)用LMS算法的FIR型自適應(yīng)濾波器[7]。其自適應(yīng)濾波器的程序流程圖如圖6所示。
由圖6自適應(yīng)濾波器設(shè)計流程圖可知,其設(shè)計過程主要包括三個步驟:
第一步:程序初始化
為輸入信號x(n)、濾波輸出信號y(n)、誤差信號 e(n)分配存儲區(qū),同時為輸入信號的長度(num)、濾波器階數(shù)(coeff)設(shè)置初值,本文設(shè)置為num=1 024,coeff=16。收斂因子fU=0.000 5。
第二步:調(diào)用信號輸入子程序產(chǎn)生輸入信號x(n),輸出信號y(n),誤差信號e(n)。
其程序如下:
for(i=0;i<num;i++)
{
x[i]=256*sin(i*2*PI/34);//初始化輸入信號
y[i]=z[i]=0;//初始化輸出信號誤差信號
}
第三步:調(diào)用LMS算法
主程序運行時不斷調(diào)用LMS算法子程序,來計算濾波信號輸出,檢測信號是否完成濾波,如未完成重復(fù)第三步工作[8]。其LMS算法子程序流程圖如圖7。LMS算法子程序為int FIRLMS(int*nx,float*nh,int nError,int nCoeffNum)。在CCS環(huán)境下用C語言編寫程序,通過編譯、鏈接后生成公共目標(biāo)代碼,選擇View/Graph/Time/Frequency,進(jìn)入Graph Prorerty Dialog對話框,設(shè)置合適的圖形顯示參數(shù),在顯示窗口顯示自適應(yīng)濾波器DSP仿真結(jié)果,如圖8、圖9、圖10所示。
LMS核心算法子程序如下:
int FIRLMS(int*nx,float*nh,int nError,int nCoeffNum)
{
int i,r;
float fWork;
r=0;
for(i=0;i<nCoeffNum;i++)
{
fWork=nx[i]*nError*fU;
//h(n+1)=h(n)+2u*e(n)*x(n)
nh[i]+=fWork;
r+=(nx[i-i]*nh[i]);
}
r/=128;
return r;}
通過觀察輸出波形與輸入波形,可以看出輸出波形一開始與輸入波形相差較大,但通過自適應(yīng)濾波器不斷調(diào)節(jié)加權(quán)系數(shù)w(n),使輸出波形逐漸符合輸出要求。由此也可驗證此自適應(yīng)濾波器LMS算法的有效性,其能夠很好地濾除數(shù)字信號中的噪聲,較好地還原了數(shù)字信號的信息,在數(shù)字信號處理領(lǐng)域有很好的應(yīng)用價值。
4 結(jié)束語
本文對自適應(yīng)濾波器的原理和結(jié)構(gòu)圖進(jìn)行了分析,利用先進(jìn)的MATLAB仿真技術(shù)進(jìn)行仿真最后進(jìn)行DSP的設(shè)計實現(xiàn)。仿真結(jié)果充分表明,自適應(yīng)濾波器可以根據(jù)噪聲信號的頻率進(jìn)行跟蹤并以此來很好地濾除信號中的噪聲。并且,在噪聲和信號特性不斷隨時間變化的同時,自適應(yīng)濾波器可以利用自適應(yīng)算法不斷調(diào)整和修正沖激響應(yīng)函數(shù)系數(shù),能很好地適應(yīng)輸入環(huán)境的變化。這充分突出了自適應(yīng)濾波器的優(yōu)勢,使其具有更廣泛的應(yīng)用領(lǐng)域和廣闊的發(fā)展前景,例如通信信道的自適應(yīng)均衡、心電圖的電源干擾消除、系統(tǒng)模型識別和雷達(dá)波束形成等領(lǐng)域?;诓煌淖赃m應(yīng)算法以及不同的數(shù)字濾波器結(jié)構(gòu)可構(gòu)成不同結(jié)構(gòu)的自適應(yīng)濾波器,本文重點研究了基于LMS算法的FIR型自適應(yīng)濾波器。本文還有待于進(jìn)一步研究和改進(jìn),以提高自適應(yīng)濾波器的精度和收斂速度。
參考文獻(xiàn)
[1] 貢鎮(zhèn).基于DSP的自適應(yīng)濾波器的設(shè)計與實現(xiàn)[J].現(xiàn)代電子技術(shù),2013(17):62-64.
[2] 李茂清,王潔,陳強(qiáng),等.基于MATLAB程序的FIR濾波器設(shè)計實現(xiàn)[J].電力學(xué)報,2008(2):87-90.
[3] 張玲玲,唐曉英,劉偉峰.一種新的變步長LMS自適應(yīng)濾波算法性能分析[J].生命科學(xué)儀器,2005(5):39-41.
[4] 郭華.自適應(yīng)濾波算法及應(yīng)用研究[D].西安:西北師范大學(xué),2007.
[5] 蔣薇薇,楊萍,王昱潔.基于變步長LMS算法的自適應(yīng)濾波器研究[J].儀器儀表學(xué)報,2010,31(8):478-480.
[6] 劉光普,高玉春.MATLAB在通信原理教學(xué)中的應(yīng)用[J].數(shù)據(jù)采集與處理,2012(S1):39-42.
[7] 莫晶.基于自適應(yīng)噪聲抵消系統(tǒng)的不同濾波算法研究[D].昆明:云南師范大學(xué),2014.
[8] 許國威,馬勝前,危淑平.自適應(yīng)濾波RLS算法研究與DSP實現(xiàn)[J].計算機(jī)技術(shù)與發(fā)展,2010(10):35-38.