matlab實(shí)現(xiàn)的自適應(yīng)濾波算法
MATLAB是美國(guó)MathWorks公司開發(fā)的大型數(shù)學(xué)計(jì)算應(yīng)用軟件系統(tǒng),它提供了強(qiáng)大的矩陣處理和繪圖功能,簡(jiǎn)單易用,可信度高,靈活性好,因而在世界范圍內(nèi)被科學(xué)工作者、工程師以及大學(xué)生和研究生廣泛使用,目前已經(jīng)成為國(guó)際市場(chǎng)上科學(xué)研究和工程應(yīng)用方面的主導(dǎo)軟件。掌握MATLAB并借助它解決理論與應(yīng)用問題已經(jīng)成為每一個(gè)從事科學(xué)研究和工程技術(shù)人員應(yīng)該具備的技能。
MATLAB是Matrix Laboratory(矩陣實(shí)驗(yàn)室)的縮寫,是當(dāng)前最流行、功能強(qiáng)大的科技應(yīng)用軟件和編程語言之一。MATLAB語言有以下特點(diǎn):
1、功能強(qiáng)大:數(shù)值計(jì)算和符號(hào)計(jì)算,計(jì)算和編程可視化,數(shù)字和文字的統(tǒng)一處理,離線和在線計(jì)算;
2、界面友好,語言簡(jiǎn)明:以復(fù)數(shù)矩陣為計(jì)算單元,指令表達(dá)與數(shù)學(xué)表達(dá)式相近,是一種演算式語言;
3、開放性強(qiáng):具有70余個(gè)功能強(qiáng)大的工具箱,覆蓋面極廣,可以完成數(shù)字圖像處理、系統(tǒng)仿真、系統(tǒng)辨識(shí)、模糊控制、神經(jīng)網(wǎng)絡(luò)建模、信號(hào)處理、魯棒控制、非線性控制、優(yōu)化理論、統(tǒng)計(jì)分析等。
MATLAB成為應(yīng)用學(xué)科計(jì)算機(jī)輔助分析、設(shè)計(jì)、仿真、教學(xué)必不可少的基礎(chǔ)軟件。工具箱函數(shù)為各個(gè)領(lǐng)域的研究和工程應(yīng)用提供了有力的手段。
MATLAB系統(tǒng)的基本函數(shù)庫具有初等函數(shù)、初等矩陣和矩陣變換、包括性代數(shù)方程組和矩陣特征值問題等數(shù)值線性代數(shù)、多項(xiàng)式運(yùn)算和求根、數(shù)據(jù)析和傅立葉變換以及某些特殊的矩陣函數(shù)和數(shù)學(xué)函數(shù)等眾多內(nèi)容。
MATLAB還包括一系列被稱作工具箱(TOOLBOX)的專業(yè)求解工具。工具箱實(shí)際上是MATLAB針對(duì)不同學(xué)科、不同專業(yè)所開發(fā)的專用函數(shù)庫,用來求解各個(gè)領(lǐng)域的數(shù)值計(jì)算問題,包括數(shù)據(jù)采集工具箱、信號(hào)處理工具箱、圖像處理工具箱、小波分析工具箱、控制工具箱等。隨著MATLAB的不斷升級(jí),所含工具箱的功能越來越豐富,規(guī)模越來越龐大,因此,應(yīng)用也越來越廣泛,成為各種專業(yè)科研人員和工程技術(shù)人員的得力工具。
一個(gè)圖形界面的完成,最終是通過圖形界面的各種控件對(duì)象的操作來完成,而這些操作必定是通過Matlab 中函數(shù)代碼的執(zhí)行來完成的。函數(shù)代碼的編制可以通過編寫回調(diào)函數(shù)完成,而編寫時(shí)當(dāng)所要求執(zhí)行的指令比較簡(jiǎn)單時(shí),可以把該控件的代碼直接寫在“CallBack“屬性中;當(dāng)所要求執(zhí)行的指令比較長(zhǎng)時(shí)可以把函數(shù)代碼放在一個(gè)自定義的M 文件中,在“CallBack”中直接將其文件名寫上,也可以在主控文件中直接編寫,當(dāng)操作該控件時(shí)系統(tǒng)會(huì)自動(dòng)執(zhí)行“CallBack”中所要求執(zhí)行的內(nèi)容。
在本設(shè)計(jì)中,采用的是在主控文件中直接編寫的方法,在GUI 界面單擊當(dāng)前需要編寫程序的控件,然后右擊將出現(xiàn)一個(gè)右鍵菜單,然后選擇Callback 選項(xiàng),即可直接進(jìn)入主控M 文件,并且系統(tǒng)會(huì)自動(dòng)生成語句。
目前的MATLAB已經(jīng)成為國(guó)際上最為流行的軟件之一,它除了傳統(tǒng)的交互式編程之外,還提供了豐富可靠的矩陣運(yùn)算、圖形繪制、數(shù)據(jù)處理、圖形處理,方便的windows編程等便利工具,出現(xiàn)了各種以MATLAB為基礎(chǔ)的實(shí)用工具箱,廣泛地應(yīng)用于自動(dòng)控制、圖像信號(hào)處理、生物醫(yī)學(xué)工程、語言處理、雷達(dá)工程、信號(hào)分析、振動(dòng)理論、時(shí)序分析于建模、優(yōu)化設(shè)計(jì)等領(lǐng)域。
算法實(shí)現(xiàn)設(shè)計(jì)本課題的主要內(nèi)容是在MATLAB上實(shí)現(xiàn)自適應(yīng)濾波器的設(shè)計(jì)。課題的具體內(nèi)容
為利用GUI界面設(shè)計(jì)出濾波器的選擇界面、參數(shù)的輸入界面、結(jié)果分析圖等。其中濾波器的設(shè)計(jì)將會(huì)用兩種算法實(shí)現(xiàn)既LMS算法和RLS算法,算法實(shí)現(xiàn)的基本設(shè)計(jì)框圖如圖4所示。
由于本論文要實(shí)現(xiàn)兩種不同的算法,通過GUI界面設(shè)計(jì)能給人一個(gè)比較好直觀的效果。同時(shí)兩種算法在參數(shù)取值方面會(huì)有不同之處,因此在軟件設(shè)計(jì)中,我通過文本編輯框控件來接收用戶輸入的濾波器設(shè)計(jì)指標(biāo)值,這讓我們能更方便的通過調(diào)整不同的參數(shù)值觀測(cè)實(shí)驗(yàn)結(jié)果,從而來保證濾波器的最佳狀態(tài)。此外,Matlab 通過創(chuàng)建應(yīng)用程序M 文件為GUI控制程序提供一個(gè)框架。所有代碼都包含在應(yīng)用程序M 文件中,即完成了圖形界面的設(shè)計(jì)后,應(yīng)用程序設(shè)計(jì)的主要工作是控件回調(diào)函數(shù)的設(shè)計(jì)。自適應(yīng)濾波算法的主界面如圖5。
LMS算法的實(shí)現(xiàn)
LMS算法實(shí)現(xiàn)流程圖如圖6。
在圖中,w(k)為濾波器濾波系數(shù)矢量估值,w(k+1)=w(k)-u,u是一個(gè)控制因子,用它來控制收斂速度與穩(wěn)定性,u太大不穩(wěn)定,u太小收斂速度很慢。通常0《u《1/max,max是R中的最大的特征值。(k)是誤差梯度,直接計(jì)算(k)=J(w)/w很復(fù)雜,一般直接用誤差的平方作為均方誤差E|e(k)2估計(jì)值(k)。因?yàn)镋{(k)}=k表明(k)是無偏估計(jì)。
直到計(jì)算到達(dá)到(e)k預(yù)期小的值為止,或(w)k達(dá)到穩(wěn)定為止。
根據(jù)u的取值不同LMS算法可分為以下三種類型: