張立萍
(赤峰學(xué)院 物理與電子信息工程學(xué)院,內(nèi)蒙古 赤峰 024000)
FLMS算法的Matlab設(shè)計與仿真
張立萍
(赤峰學(xué)院 物理與電子信息工程學(xué)院,內(nèi)蒙古 赤峰 024000)
自適應(yīng)濾波技術(shù)已經(jīng)被廣泛應(yīng)用于數(shù)字通信、雷達(dá)和工業(yè)控制等領(lǐng)域.本文以隨機干擾噪聲信號作為研究對象,利用Matlab工具設(shè)計了FLMS去噪自適應(yīng)濾波器的程序,并進(jìn)行了仿真,為硬件實現(xiàn)提供了有力的參考.
自適應(yīng)濾波器;LMS算法;FLMS算法
LMS算法是用均方誤差來做為性能指標(biāo),也就是使濾波器的期望輸出值和實際輸出值之間的均方誤差(Mean Squared Errer,MSE)達(dá)到最小.
設(shè)自適應(yīng)濾波器的輸入矢量為:
加權(quán)矢量(即濾波器參數(shù)矢量)為:
濾波器的輸出為:
誤差信號e(n)定義為期望輸出d(n)與濾波器實際輸出之間的誤差,即
W(n)是常數(shù)矢量的情況下,其均方誤差可表示為
權(quán)矢量遞推公式,即LMS算法遞推公式為:
雖然LMS算法計算簡單,但是收斂速度慢.為了克服LMS算法收斂緩慢的問題,實現(xiàn)具有長記憶功能的自適應(yīng)FIR濾波器,提出了塊LMS處理算法,就是將L個權(quán)系數(shù)構(gòu)成一塊.在處理每個塊時,令各權(quán)值保持不變,而每個塊處理完后權(quán)值才改變.設(shè)第k塊處理期間自適應(yīng)濾波器的輸出為
其中,W(k)=[w0(k),w1(k),…,wL-1(k)T為第k塊處理期間的時域權(quán)矢量,其各元素wl(k)(l=0,1,…,L-1)保持為常數(shù).第k塊處理后,權(quán)矢量調(diào)整的迭代公式為
式中?(k)向量是互相關(guān)的.
通過數(shù)字信號處理理論可知:快速傅立葉變換(即FFT算法)是實現(xiàn)卷積和相關(guān)的快速運算,實現(xiàn)FFT可以采用重疊保留法和重疊相加法,其中重疊保留法較為常用.盡管重疊保留法的重疊部分長度可為任意值,但是運算效率最高的是1/2重疊(即塊的大小等于系數(shù)的個數(shù)).快速LMS(即FLMS)算法是時域塊處理LMS(BLMS)算法在頻域的快速實現(xiàn).下面將式(2)的輸出改寫成濾波器輸入與權(quán)系數(shù)的線性卷積公式如下:
式(4)線性卷積可通過重疊保留法,用FFT實現(xiàn).由于1/2的數(shù)據(jù)重疊是最有效的,即在M(M=L)點濾波器抽頭系數(shù)后補M個零,再進(jìn)行N點的FFT,這里N=2M,即:
令X(k)為第k-1塊與第k塊輸入經(jīng)2M點FFT后所構(gòu)成的對角陣,即:
這樣,式(4)線性卷積的頻域?qū)崿F(xiàn)如下式,它為第 塊的濾波輸出值,是 維向量:
因為最前面的M個元素進(jìn)行循環(huán)卷積,式中只需保留最后M個元素即可.
下面考慮式(3)中?(k)的線性相關(guān).對于第k塊,定義M'1期望響應(yīng)向量:
及相應(yīng)的M'1誤差信號向量:
如果注意到,在式(7)所述線性卷積實現(xiàn)中,開始的M個元素已從輸出中廢棄掉,則可將誤差信號e(k)向量變換到頻域,得
由于線性相關(guān)實際上是與線性卷積相似的一種運算形式,因此可將重疊存儲方法用于矢量?(k)中,則?(k)可用IFFT計算如下:
最后,頻域權(quán)矢量調(diào)整的迭代公式為:
公式(6)、(7)、(8)、(9)、(10)就是 FLMS 自適應(yīng)濾波算法,其信號流圖如圖1所示.實際上FLMS算法是一種變換到頻域的快速算法,它與塊LMS算法有相同的收斂特性,而FLMS算法的收斂速率可以在不影響最小均方誤差條件下,通過調(diào)節(jié)每個可調(diào)權(quán)值的步長來進(jìn)行調(diào)節(jié)和改善.
圖1 FLMS算法的信號流圖
本文利用MATLAB工具箱編寫.M文件FLMS.m對快速塊LMS算法進(jìn)行設(shè)計,并利用繪圖函數(shù)得到仿真波形,從而驗證算法的可行性.其中,各參數(shù)代表的含義如下:
FLMS算法中權(quán)向量{w}的更新表達(dá)式在M文件中的實現(xiàn)代碼為:
仿真時,正弦信號為sin(0.01*Pi*t),其中t=1:dian,加入標(biāo)準(zhǔn)白噪聲信號作為干擾信號,在Matlab中運行FLMS.m文件,得到快速塊LMS算法的仿真結(jié)果如圖2.
圖2 FLMS算法的輸入和輸出曲線
下面將快速塊LMS(即FLMS)算法與傳統(tǒng)LMS算法的計算復(fù)雜性進(jìn)行比較.由于濾波器的實現(xiàn)快慢主要取決于乘法的次數(shù),下面以塊長度為N時兩種算法需要的總乘法次數(shù)進(jìn)行比較.具有N個抽頭權(quán)值(實數(shù))的傳統(tǒng)LMS算法,每計算一個輸出需要N次乘法,同時更新一次權(quán)值需要N次乘法,所以每次迭代共要2N次乘法,而對于濾波器的N個輸出值,共需要2N2次乘法.現(xiàn)在分析FLMS算法所需的乘法次數(shù):每個M(M=2N)點快速傅立葉變換(即FFT)需要約Mlog2M次乘法運算,如果要執(zhí)行5次頻率變換,共要計算5Mlog2M次乘法,計算頻域輸出需要4M次乘法,而且計算互相關(guān)(與梯度向量估計有關(guān))運算也需要4M次乘法,快速塊LMS算法總共需要的乘法次數(shù)為
5Mlog2M+8M=10Nlog2(2N)+16N=10Nlog2N+26N
如果取抽頭值為1024,傳統(tǒng)LMS算法所需乘法次數(shù)大概是200萬次,快速塊LMS算法所需乘法次數(shù)大概為12.6萬次,計算速度快了15倍左右.
〔1〕杜培宇.基于自適應(yīng)濾波器的噪聲抑制技術(shù)研究[D].碩士學(xué)位論文.山東大學(xué),2005.
〔2〕黃埔堪,陳建文,樓生強.現(xiàn)代數(shù)字信號處理[M].北京:電子工業(yè)出版社,2003.
〔3〕沈福民.自適應(yīng)信號處理[M].西安:西安電子科技大學(xué)出版社,2001.
〔4〕王建中,羅欣武,劉文江,等.一種改進(jìn)的DMT系統(tǒng)頻域均衡器[J].計算機工程與應(yīng)用,2006(24):98-101.
〔5〕齊海兵.基于FPGA的橫向LMS算法的實現(xiàn)[J].國外電子元器件,2007(1):31-34.
TN91
A
1673-260X(2012)11-0038-02