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