基于MATLABGUI的Kalman濾波程序_第1頁
基于MATLABGUI的Kalman濾波程序_第2頁
基于MATLABGUI的Kalman濾波程序_第3頁
基于MATLABGUI的Kalman濾波程序_第4頁
基于MATLABGUI的Kalman濾波程序_第5頁
已閱讀5頁,還剩17頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、目 錄序言- 1 -第1章 Kalman濾波理論- 2 -1.1 Kalman濾波理論的應(yīng)用背景- 2 -1.2 卡爾曼濾波的基本思想- 3 -1.3 卡爾曼濾波理論基礎(chǔ)- 4 -1.4 卡爾曼濾波參數(shù)的估計(jì)和調(diào)整- 5 -1.5 小結(jié)- 7 -第2章 MATLAB及GUI編程概述- 8 -2.1 MATLAB簡介- 8 -2.2 MATLAB_GUI概述- 8 -第3章 Kalman濾波GUI和程序的設(shè)計(jì)- 10 -3.1 Kalman濾波器的應(yīng)用實(shí)例- 10 -3.2 Kalman濾波GUI設(shè)計(jì)所實(shí)現(xiàn)的任務(wù)- 11 -3.3 GUI界面設(shè)計(jì)- 11 -第4章 在MATLAB_GUI下運(yùn)行程

2、序- 18 -4.1 通過MATLAB_GUI運(yùn)行結(jié)果- 18 -4.2運(yùn)行結(jié)果分析- 18 -參考文獻(xiàn)- 20 -1 Kalman R.E.A New Approach to Linear filtering and Prodiction Theory.Trans.ASME.Journal of Basic Eng,1960,82D:35-46.- 20 -2- 20 -4- 20 -致 謝- 21 -序言最佳線性濾波理論起源于40年代美國科學(xué)家Wiener和前蘇聯(lián)科學(xué)家等人的研究工作,后人統(tǒng)稱為維納濾波理論。從理論上說,維納濾波的最大缺點(diǎn)是必須用到無限過去的數(shù)據(jù),不適用于實(shí)時處理。為了克服

3、這一缺點(diǎn),60年代Kalman把狀態(tài)空間模型引入濾波理論,并導(dǎo)出了一套遞推估計(jì)算法,后人稱之為卡爾曼濾波理論。1960年, R.E. Kalman 出版了他的著名論文,描述了一個離散線性系統(tǒng)濾波問題的遞歸的解決方案。Kalman 濾波器是一組數(shù)學(xué)等式,它提供了一個有效的計(jì)算(回歸)方法,來估計(jì)過程的狀態(tài),在這種方法中,將均方差最小化。該濾波器功能非常強(qiáng)大,它支持過去、現(xiàn)在、甚至將來狀態(tài)的估計(jì),并當(dāng)模型系統(tǒng)的精確特性未知的情況下進(jìn)行估計(jì)??柭鼮V波器(Kalman Filter)是一個最優(yōu)化自回歸數(shù)據(jù)處理算法(optimal recursive data processing algorithm

4、)。對于解決很大部分的問題,他是最優(yōu),效率最高甚至是最有用的。他的廣泛應(yīng)用已經(jīng)超過30年,包括機(jī)器人導(dǎo)航,控制,傳感器數(shù)據(jù)融合甚至在軍事方面的雷達(dá)系統(tǒng)以及導(dǎo)彈追蹤等等。近年來更被應(yīng)用于計(jì)算機(jī)圖像處理,例如頭臉識別,圖像分割,圖像邊緣檢測等等。目前Kalman濾波器的設(shè)計(jì)有許多現(xiàn)成的高級語言設(shè)計(jì)程序,但他們都存在設(shè)計(jì)效率低,不具有可視圖形,不便于參數(shù)修改等缺點(diǎn),而MATLAB_GUI為Kalman濾波器的研究和應(yīng)用提供了一個直觀、高效、便捷的利器。它以矩陣運(yùn)算為基礎(chǔ),把計(jì)算、可視化、仿真以及設(shè)計(jì)融合到一個交互式的工作環(huán)境中。本文基于MATLAB_GUI對Kalman濾波器進(jìn)行設(shè)計(jì)和仿真。第1章

5、Kalman濾波理論1.1 Kalman濾波理論的應(yīng)用背景信號是傳遞和運(yùn)載信息的時間或空間函數(shù)。信號有兩類,即確定性信號和隨即信號。確定性信號的變化規(guī)律是既定的,可以表示為一確定的時間函數(shù)或空間函數(shù),具有確定的頻譜特性,如階躍信號、脈寬固定的矩形脈沖信號,正余弦函數(shù)等,它們對于指定的某一時刻,可確定一相應(yīng)的函數(shù)值。隨即信號沒有既定的變化規(guī)律,不能給出確定的時間或空間函數(shù),在相同的初始條件和環(huán)境條件下,信號每次實(shí)現(xiàn)都不一樣,如陀螺漂移、慣性導(dǎo)航系統(tǒng)的導(dǎo)航誤差、GPS的SA誤差、海浪等,隨即信號盡管沒有確定的頻譜特性,但是可以知道它的統(tǒng)計(jì)特性,即具有確定的功率譜。信號在傳輸與檢測過程中不可避免地要

6、受到外來干擾與設(shè)備內(nèi)部噪聲的影響,使接收端收到的信號具有隨機(jī)性。為獲取所需信號,排除干擾,就要對信號進(jìn)行濾波。所謂濾波,是指從混合在一起的諸多信號中提取出所需信號的過程。信號的性質(zhì)不同,獲取的方法就不同,即濾波的手段不同。對于確定性信號,由于其具有確定的頻譜特性,可根據(jù)各信號所處頻帶的不同,設(shè)置具有相應(yīng)頻率特性的濾波器,如低通濾波器、高通濾波器、帶通濾波器及帶阻濾波器等,使有用信號無衰減地通過,而干擾信號收到抑制。這類濾波器可用物理的方法實(shí)現(xiàn),即模擬濾波器,亦可用計(jì)算機(jī)通過算法實(shí)現(xiàn),即數(shù)字濾波器。對確定性信號的濾波處理通常稱為常規(guī)濾波。隨即信號具有確定的功率譜特性,可根據(jù)有用信號和干擾信號的功

7、率譜設(shè)計(jì)濾波器。美國學(xué)者維納(N.Wiener)等人提出了Wiener濾波,它通過做功率譜分解設(shè)計(jì)濾波器,在對信號做抑制和選通這一點(diǎn)同常規(guī)濾波是相似的。由于在頻域進(jìn)行Wiener濾波器設(shè)計(jì)需要求解維納-霍普方程,且計(jì)算量較大,需要大量的存儲空間,妨礙了Wiener濾波的應(yīng)用。Kalman濾波是卡爾曼于1960年提出的從與被提取信號有關(guān)的觀測量中通過算法估計(jì)出所需信號的一種濾波算法1。他把狀態(tài)空間的概念引入到隨即估計(jì)理論中,把信號過程視為白噪聲作用下的一個線性系統(tǒng)的輸出,用狀態(tài)方程來描述這種輸入-輸出關(guān)心,估計(jì)過程中利用系統(tǒng)狀態(tài)方程、觀測方程和白噪聲激勵(系統(tǒng)噪聲和觀測噪聲)的統(tǒng)計(jì)特性形成濾波算

8、法,由于所用的信息都是時域內(nèi)的量,所以不但可以對平穩(wěn)的一維的隨機(jī)過程進(jìn)行估計(jì),也可以對非平穩(wěn)的、多維隨機(jī)過程進(jìn)行估計(jì)。這就完全避免了Wiener濾波在頻域內(nèi)設(shè)計(jì)時遇到的限制,適用范圍比較廣泛。實(shí)際上,Kalman濾波是一套由計(jì)算機(jī)實(shí)現(xiàn)的實(shí)時遞推算法,它所處理的對象是隨機(jī)信號,利用系統(tǒng)噪聲和觀測噪聲的統(tǒng)計(jì)特性,以系統(tǒng)的觀測量作為濾波器的輸入,以所要估計(jì)值(系統(tǒng)的狀態(tài)或參數(shù))作為濾波器的輸出,濾波器的輸入與輸出之間是由時間更新和觀測更新算法聯(lián)系在一起的,根據(jù)系統(tǒng)方程和觀測方程估計(jì)出所有需要處理的信號。所以,此處所談的Kalman濾波與常規(guī)濾波的涵義與方法完全不同,實(shí)質(zhì)上是一種最優(yōu)估計(jì)方法。1.2

9、卡爾曼濾波的基本思想卡爾曼濾波器是線性無偏最小均方誤差遞推濾波器。與維納濾波相比,在平穩(wěn)條件下,它們所得到的穩(wěn)態(tài)結(jié)果是一致的。然后,它們解決的方法有很大區(qū)別。維納濾波是根據(jù)全部過去的和當(dāng)前的觀察數(shù)據(jù)來估計(jì)信號的當(dāng)前值,它的解是以均方誤差最小條件下所得到的系統(tǒng)的傳遞函數(shù)H(z)或單位樣本響應(yīng)h(n)的形式給出的,因此稱這種系統(tǒng)為最佳線性過濾器或?yàn)V波器。而卡爾曼過濾是用前一個估計(jì)值和最近一個觀察數(shù)據(jù)來估計(jì)信號的當(dāng)前值,是用狀態(tài)方程和遞推的方法進(jìn)行估計(jì)的,其解是以估計(jì)形式給出。因此稱這種系統(tǒng)為線性最有估計(jì)器或?yàn)V波器??柭鼮V波過程實(shí)際上是獲取維納解的遞推運(yùn)算過程2,卡爾曼過濾中信號和噪聲是狀態(tài)方程和

10、測量方程表示的,因此設(shè)計(jì)卡爾曼濾波器要求已知狀態(tài)方程和測量方程。標(biāo)準(zhǔn)卡爾曼濾波器是在最小均方誤差準(zhǔn)則下的最佳線性過濾器,就是說,它使系統(tǒng)的狀態(tài)向量和狀態(tài)向量的預(yù)測值之間的均方誤差達(dá)到最小,它用狀態(tài)方程和遞推方法進(jìn)行估計(jì),它的解是以估計(jì)值形式給出的。由于它能夠?qū)ξ矬w的運(yùn)動建立某種模型,因此在跟蹤中經(jīng)常被用到。當(dāng)觀測方程不是線性時,上述標(biāo)準(zhǔn)卡爾曼方程不再適用??偟膩碚f,卡爾曼濾波器是一個線性的估計(jì)器,能夠有效地跟蹤物體的運(yùn)動和形狀變化,但它基于兩個假設(shè):一是背景相對干凈;二是運(yùn)動參數(shù)服從高斯分布,因而適用范圍有限。1.3 卡爾曼濾波理論基礎(chǔ)在這一部分,我們就來描述源于Dr Kalman的卡爾曼濾波

11、器。下面的描述,會涉及一些基本的概念知識,包括概率(Probability),隨機(jī)變量(Random Variable),高斯或正態(tài)分配(Gaussian Distribution)還有State-space Model等等。但對于卡爾曼濾波器的詳細(xì)證明,這里不能一一描述。(1)在介紹卡爾曼濾波算法之前,先簡要介紹白噪聲的概念。所謂高斯白噪聲中的高斯是指概率分布是正態(tài)函數(shù),而白噪聲是指它的二階矩不相關(guān),一階矩為常數(shù),是指先后信號在時間上的相關(guān)性。這是考查一個信號的兩個不同方面的問題。高斯白噪聲:如果一個噪聲,它的幅度分布服從高斯分布,而它的功率譜密度又是均勻分布的,則稱它為高斯白噪聲。 (2)

12、Kalman濾波器算法首先,我們先要引入一個離散控制過程的系統(tǒng)。該系統(tǒng)可用一個線性隨機(jī)微分方程(Linear Stochastic Difference equation)來描述: (1.1)再加上系統(tǒng)的測量值: (1.2)上兩式子中,X(k)是k時刻的系統(tǒng)狀態(tài),U(k)是k時刻對系統(tǒng)的控制量。A和B是系統(tǒng)參數(shù),對于多模型系統(tǒng),他們?yōu)榫仃?。Z(k)是k時刻的測量值,H是測量系統(tǒng)的參數(shù),對于多測量系統(tǒng),H為矩陣。W(k)和V(k)分別表示過程和測量的噪聲。他們被假設(shè)成高斯白噪聲(White Gaussian Noise),他們的協(xié)方差分別是Q,R(這里我們假設(shè)他們不隨系統(tǒng)狀態(tài)變化而變化)。對于滿

13、足上面的條件(線性隨機(jī)微分系統(tǒng),過程和測量都是高斯白噪聲),卡爾曼濾波器是最優(yōu)的信息處理器。下面我們來用他們結(jié)合他們的covariances來估算系統(tǒng)的最優(yōu)化輸出。首先我們要利用系統(tǒng)的過程模型,來預(yù)測下一狀態(tài)的系統(tǒng)。假設(shè)現(xiàn)在的系統(tǒng)狀態(tài)是k,根據(jù)系統(tǒng)的模型,可以基于系統(tǒng)的上一狀態(tài)而預(yù)測出現(xiàn)在狀態(tài): (1.3)式(1.3)中,X(k|k-1)是利用上一狀態(tài)預(yù)測的結(jié)果,X(k-1|k-1)是上一狀態(tài)最優(yōu)的結(jié)果,U(k)為現(xiàn)在狀態(tài)的控制量,如果沒有控制量,它可以為0。到現(xiàn)在為止,我們的系統(tǒng)結(jié)果已經(jīng)更新了,可是,對應(yīng)于X(k|k-1)的covariance還沒更新。我們用P表示covariance: (

14、1.4)式(1.4)中,P(k|k-1)是X(k|k-1)對應(yīng)的covariance,P(k-1|k-1)是X(k-1|k-1)對應(yīng)的covariance,A表示A的轉(zhuǎn)置矩陣,Q是系統(tǒng)過程的covariance。式子1.3、1.4就是卡爾曼濾波器5個公式當(dāng)中的前兩個,也就是對系統(tǒng)的預(yù)測。現(xiàn)在我們有了現(xiàn)在狀態(tài)的預(yù)測結(jié)果,然后我們再收集現(xiàn)在狀態(tài)的測量值。結(jié)合預(yù)測值和測量值,我們可以得到現(xiàn)在狀態(tài)(k)的最優(yōu)化估算值X(k|k): (1.5)其中Kg為卡爾曼增益(Kalman Gain): (1.6)到現(xiàn)在為止,我們已經(jīng)得到了k狀態(tài)下最優(yōu)的估算值X(k|k)。但是為了要使卡爾曼濾波器不斷的運(yùn)行下去直到

15、系統(tǒng)過程結(jié)束,我們還要更新k狀態(tài)下X(k|k)的covariance: (1.7)其中I為1的矩陣,對于單模型單測量I=1。當(dāng)系統(tǒng)進(jìn)入k+1狀態(tài)時,P(k|k)就是式子(1.4)的P(k-1|k-1)。這樣,算法就可以自回歸的運(yùn)算下去。卡爾曼濾波器的原理基本描述了,式子1.3,1.4,1.5,1.6和1.7就是他的5個基本公式。根據(jù)這5個公式,可以很容易的實(shí)現(xiàn)計(jì)算機(jī)的程序。由上面可以看出,濾波過程是以不斷地“預(yù)測修正”的遞推方式進(jìn)行計(jì)算,先進(jìn)行預(yù)測值計(jì)算,再根據(jù)觀測值得到的新信息和Kalman增益(加權(quán)項(xiàng)),對預(yù)測值進(jìn)行修改。由濾波值可以得到預(yù)測,又由預(yù)測可以得到濾波,其濾波和預(yù)測相互作用,并

16、不要求存儲任何觀測數(shù)據(jù),可以進(jìn)行實(shí)時處理。1.4 卡爾曼濾波參數(shù)的估計(jì)和調(diào)整在卡爾曼濾波的使用中,通常首先要測量噪聲協(xié)方差R??梢酝ㄟ^離線測量實(shí)驗(yàn)確定。但是確定過程噪聲協(xié)方差Q一般更困難,因?yàn)闊o法直接觀察過程。當(dāng)對一個相對簡單的過程模型加入足夠的不確定性時(通過選擇合適的Q)得到的結(jié)果是可信的。無論如何,通過運(yùn)行中調(diào)整Q和R可以得到較好的濾波效果。調(diào)整通常是離線的,通常借助于過程的另一個卡爾曼濾波進(jìn)行系統(tǒng)辨識來實(shí)現(xiàn)。在Q和R為常數(shù)的情況下,估計(jì)誤差協(xié)方差Pk 和卡爾曼增益Kk 都會迅速鎮(zhèn)定,然后保持為常量。如果是這樣的話,可以通過離線運(yùn)行濾波器來預(yù)先確定這些參數(shù)。然而通常的情況是測量誤差不會保

17、持常量。例如,當(dāng)觀察光電跟蹤器面板上的亮點(diǎn)時,對附近的亮點(diǎn)的測量誤差要小于遠(yuǎn)處的。有時過程噪聲Q 在濾波器運(yùn)行中是動態(tài)變化的,變成了Qk,以調(diào)整符合不同的動態(tài)特點(diǎn)。例如在跟蹤三維虛擬環(huán)境中的用戶頭部時,如果用戶慢速移動,就要減小Qk 值,如果動態(tài)變化加快就增加Qk 值。在這類情況下,通過選擇來適應(yīng)用戶意圖的不確定性以及模型中的不確定性3。(1)測量方程協(xié)方差的確定測量方程是由測量設(shè)備可以實(shí)現(xiàn)的測量量來確定形式的,例如激光測距儀可以進(jìn)行目標(biāo)位置徑向位置和角度位置的測量(極坐標(biāo)測量),因此這兩個量就是測量方程的輸出。測量方程的協(xié)方差可以通過對激光測距儀的試驗(yàn)來確定。方法是利用在測距儀和目標(biāo)都固定的

18、情況下,激光測距儀對已知位置的目標(biāo)進(jìn)行多次測量,得到一組測量數(shù)據(jù),然后利用MATLAB 軟件求出這組數(shù)據(jù)的協(xié)方差就可以作為測量方程的協(xié)方差了。當(dāng)然測距儀在測量不同距離的目標(biāo)時,測量的誤差可能不同,所以就有不同的協(xié)方差,可以取一個中間位置對應(yīng)的協(xié)方差為儀器的協(xié)方差?;蛘呷y量范圍內(nèi)最大的協(xié)方差。(2)狀態(tài)方程(過程方程)的協(xié)方差確定過程方程的協(xié)方差比較難以確定,一種方法是對于比較容易觀察過程變化的系統(tǒng),通過經(jīng)驗(yàn)設(shè)定協(xié)方差。另一種需要通過仿真來調(diào)整。對于給定的過程方程,先預(yù)設(shè)一個協(xié)方差,通過設(shè)定一系列標(biāo)準(zhǔn)的測量值,仿真觀察卡爾曼濾波是否很快收斂,如果不收斂或者收斂慢則可以調(diào)整過程協(xié)方差來達(dá)到較好的

19、效果。1.5 小結(jié)Kalman濾波器是一個最優(yōu)化遞歸處理算法(optimal recursive data processing algorithm)。(1)最優(yōu)(optimal)依賴于評價性能的判據(jù)。Kalman濾波器充分利用如下信息估計(jì)感興趣變量當(dāng)前取值:a.系統(tǒng)和測量裝置的動態(tài)特性;b.系統(tǒng)噪聲、測量誤差和動態(tài)模型的不確定性的統(tǒng)計(jì)描述;c.感興趣變量的初始條件的相關(guān)信息。(2)遞歸(recursive)是指Kalman不需要保存先前的數(shù)據(jù),當(dāng)進(jìn)行新的測量時也不需要對原來數(shù)據(jù)進(jìn)行處理。(3)filter(DPA)實(shí)際上是數(shù)據(jù)處理算法,只不過是計(jì)算中處理的程序,因此能處理離散時間測量樣本,而

20、不是連續(xù)時間輸入?;炯僭O(shè):采用線性模型是合理的;這是典型工程模型在某些主要點(diǎn)或軌跡是線性的,線性模型比非線性模型更簡單。因此用線性模型來近似。白噪聲意味著噪聲值和時間不相關(guān);白噪聲指在整個頻率上都有相同強(qiáng)度的頻率特性的噪聲。實(shí)際應(yīng)用中將頻率設(shè)為常值,帶寬大大超過系統(tǒng)帶寬的噪聲稱為白噪聲,用高斯白噪聲來模擬,可以大大簡化模型。采用高斯密度函數(shù)在實(shí)踐上是可行的。因?yàn)椴捎酶咚购瘮?shù)在數(shù)學(xué)上容易處理。當(dāng)缺少高階統(tǒng)計(jì)量時,除了假定高斯密度外,沒有更好的可以表示的函數(shù)形式。用一階和二階統(tǒng)計(jì)量完全可以描述高斯白噪聲。第2章 MATLAB及GUI編程概述2.1 MATLAB簡介作為具有科學(xué)計(jì)算、符號運(yùn)算和圖形

21、處理等多種功能的強(qiáng)有力實(shí)現(xiàn)工具,近年來MATLAB這一軟件已得到了業(yè)界的普遍認(rèn)可,應(yīng)用領(lǐng)域已拓展到數(shù)值計(jì)算、數(shù)據(jù)處理、統(tǒng)計(jì)分析、工程等各個方面,在各大公司、科研機(jī)構(gòu)和高校得到廣泛應(yīng)用,其自身也因此得到迅速發(fā)展,功能不斷擴(kuò)充。MATLAB 是一種高效的工程計(jì)算語言,它在數(shù)值計(jì)算、數(shù)據(jù)處理、自動控制、圖像處理、神經(jīng)網(wǎng)絡(luò)、小波分析、金融分析等方面有著廣泛的應(yīng)用。MATLAB 系統(tǒng)不但提供大量涉及各個工程領(lǐng)域的工具箱來簡化科學(xué)計(jì)算、工程設(shè)計(jì)和分析等工作,而且提供具有自身特點(diǎn)的編程語言,可以輕松地實(shí)現(xiàn)大量數(shù)據(jù)的分析、處理及顯示任務(wù)。一般而言,用戶總希望將數(shù)據(jù)或設(shè)計(jì)結(jié)果用圖形來表示,以使數(shù)據(jù)的特征或性能能

22、夠直觀地體現(xiàn)出來。對于一般的高級語言程序來說,繪制圖形,尤其是根據(jù)計(jì)算結(jié)果所得的不規(guī)則圖形是一項(xiàng)較為復(fù)雜的工作,用戶只有在對該語言有了較為深入的了解后才能迅速準(zhǔn)確地繪制所需的圖形,而MATLAB 面向?qū)ο蟮膱D形技術(shù)使用戶可以輕松實(shí)現(xiàn)自身數(shù)據(jù)或處理后數(shù)據(jù)的繪制任務(wù)。使用MATLAB 提供的大量圖形設(shè)計(jì)技術(shù),用戶無需了解圖形實(shí)現(xiàn)的細(xì)節(jié)內(nèi)容,有時甚至只需一條簡單的指令就可以繪制非常復(fù)雜的圖形。另外,用戶還可以根據(jù)需要來規(guī)劃MATLAB 的圖形外觀,使得繪圖結(jié)果完全符合用戶的需求。從當(dāng)前的軟件趨勢來看,友好的圖形界面已經(jīng)成為應(yīng)用程序的基本交互入口,為此,MATLAB 提供了對用戶圖形界面(GUI)的支

23、持,使MATLAB 開發(fā)的程序可以為更多的用戶所接受。2.2 MATLAB_GUI概述圖形用戶界面(Graphical User Interface,簡稱 GUI,又稱圖形用戶接口)是指采用圖形方式顯示的計(jì)算機(jī)操作用戶界面。與早期計(jì)算機(jī)使用的命令行界面相比,圖形界面對于用戶來說在視覺上更易于接受。圖形用戶界面(GUI)是用戶與計(jì)算機(jī)程序之間的交互方式,是用戶與計(jì)算機(jī)進(jìn)行信息交流的方式。計(jì)算機(jī)在屏幕顯示圖形和文本,若有揚(yáng)聲器還可產(chǎn)生 聲音。用戶通過輸入設(shè)備,如:鍵盤、鼠標(biāo)、跟蹤球、繪制板或麥克風(fēng),與計(jì)算機(jī)通訊。用戶界面設(shè)定了如何觀看和如何感知計(jì)算機(jī)、操作系統(tǒng)或應(yīng)用程序。通常, 多是根據(jù)悅目的結(jié)構(gòu)

24、和用戶界面功能的有效性來選擇計(jì)算機(jī)或程序。圖形用戶界面或GUI是包含圖形對象,如:窗口、圖標(biāo)、菜單和文本的用戶界面。以某種方式 選擇或激活這些對象,通常引起動作或發(fā)生變化。最常見的激活方法是用鼠標(biāo)或其它點(diǎn)擊設(shè)備去控制屏幕上的鼠標(biāo)指針的運(yùn)動。按下鼠標(biāo)按鈕,標(biāo)志著對象的選擇或 其它動作。MATALB 可以創(chuàng)建圖形用戶界面GUI ( GraphicalUser Interface) ,它是用戶和計(jì)算機(jī)之間交流的工具。MATLAB 將所有GUI支持的用戶控件都集成在這個環(huán)境中并提供界面外觀、屬性和行為響應(yīng)方式的設(shè)置方法,隨著版本的提高,這種能力還會不斷加強(qiáng)。而且具有強(qiáng)大的繪圖功能,可以輕松的獲得更高質(zhì)

25、量的曲線圖。第3章 Kalman濾波GUI和程序的設(shè)計(jì)3.1 Kalman濾波器的應(yīng)用實(shí)例假設(shè)我們要研究的對象是一個房間的溫度。根據(jù)你的經(jīng)驗(yàn)判斷,這個房間的溫度是恒定的,也就是下一分鐘的溫度等于現(xiàn)在這一分鐘的溫度(假設(shè)我們用一分鐘來做時間單位)。假設(shè)你的經(jīng)驗(yàn)不是100%的可信,可能會有上下偏差幾度。我們把這些偏差看成是高斯白噪聲(White Gaussian Noise),也就是這些偏差跟前后時間是沒有關(guān)系的而且符合高斯分配(Gaussian Distribution)。另外,我們在房間里放一個溫度計(jì),但是這個溫度計(jì)也不準(zhǔn)確的,測量值會比實(shí)際值偏差。我們也把這些偏差看成是高斯白噪聲。于是現(xiàn)在對

26、于某一分鐘我們有兩個有關(guān)于該房間的溫度值:你根據(jù)經(jīng)驗(yàn)的預(yù)測值(系統(tǒng)的預(yù)測值)和溫度計(jì)的值(測量值)。下面我們要用這兩個值結(jié)合他們各自的噪聲來估算出房間的實(shí)際溫度值。假如我們要估算k 時刻的是實(shí)際溫度值。首先你要根據(jù)k-1 時刻的溫度值,來預(yù)測k 時刻的溫度。因?yàn)槟阆嘈艤囟仁呛愣ǖ模阅銜玫絢 時刻的溫度預(yù)測值是跟k-1 時刻一樣的,假設(shè)是23 度,同時該值的高斯噪聲的偏差是5 度(5 是這樣得到的:如果k-1 時刻估算出的最優(yōu)溫度值的偏差是3,你對自己預(yù)測的不確定度是4 度,他們平方相加再開方,就是5)。然后,你從溫度計(jì)那里得到了k 時刻的溫度值,假設(shè)是25 度,同時該值的偏差是4 度。由

27、于我們用于估算k 時刻的實(shí)際溫度有兩個溫度值,分別是23 度和25 度。究竟實(shí)際溫度是多少?相信自己還是相信溫度計(jì)?究竟相信誰多一點(diǎn),我們可以用他們的covariance 來判斷。因?yàn)镵g2=52/(52+42),所以Kg=0.78,我們可以估算出k 時刻的實(shí)際溫度值是:23+0.78*(25-23)=24.56 度??梢钥闯觯?yàn)闇囟扔?jì)的covariance 比較?。ū容^相信溫度計(jì)),所以估算出的最優(yōu)溫度值偏向溫度計(jì)的值。現(xiàn)在我們已經(jīng)得到k 時刻的最優(yōu)溫度值了,下一步就是要進(jìn)入k+1 時刻,進(jìn)行新的最優(yōu)估算。到現(xiàn)在為止,好像還沒看到什么自回歸的東西出現(xiàn)。對了,在進(jìn)入k+1 時刻之前,我們還要

28、算出k 時刻那個最優(yōu)值(24.56 度)的偏差。算法如下:(1-Kg)*52)0.5=2.35。這里的5 就是上面的k 時刻你預(yù)測的那個23度溫度值的偏差,得出的2.35 就是進(jìn)入k+1 時刻以后k 時刻估算出的最優(yōu)溫度值的偏差(對應(yīng)于上面的3)。就是這樣,卡爾曼濾波器就不斷的把covariance 遞歸,從而估算出最優(yōu)的溫度值。他運(yùn)行的很快,而且它只保留了上一時刻的covariance。上面的Kg,就是卡爾曼增益(Kalman Gain)。他可以隨不同的時刻而改變他自己的值。3.2 Kalman濾波GUI設(shè)計(jì)所實(shí)現(xiàn)的任務(wù)Kalman濾波GUI設(shè)計(jì)所實(shí)現(xiàn)的任務(wù)如下:(1)能夠?qū)崿F(xiàn)人機(jī)交互。(2

29、)當(dāng)單擊“運(yùn)行”按鈕的時候,經(jīng)過Kalman濾波后的曲線出現(xiàn)在GUI的axes上。3.3 GUI界面設(shè)計(jì)GUI設(shè)計(jì)面板是GUI設(shè)計(jì)工具應(yīng)用的平面,面板上部提供了菜單和常用工具按鈕,左邊提供了多種如命令按鈕、單選按鈕、可編輯文本框、靜態(tài)文本框、彈出式菜單等。進(jìn)行設(shè)計(jì)時, 首先單擊面板左邊所需的控件, 然后在右邊的圖形界面編輯區(qū)中再次單擊某一恰當(dāng)位置, 這時將在該位上為圖形界面添加相應(yīng)的控件。一個圖形界面的完成, 除了設(shè)計(jì)其外觀外, 還有相當(dāng)?shù)囊徊糠质峭ㄟ^屬性的設(shè)來完成的。因此在設(shè)置這些屬性時, 要注意下面幾個常用又很重要的屬性設(shè)置:(1) 控件風(fēng)格和外觀 BackgroundColor:設(shè)置控件

30、背景顏色,使用R G B或顏色定義。 CData:在控件上顯示的真彩色圖像,使用矩陣表示。 ForegroundColor:文本顏色。 String屬性:控件上的文本,以及列表框和彈出菜單的選項(xiàng)。 Visible:控件是否可見。 (2)對象的常規(guī)信息 Enable屬性: 表示此控件的使能狀態(tài),設(shè)置為on”,表示可選,為“off”時則表示不可選。 Style:控件對象類型。 Tag:控件表示(用戶定義)。 TooltipString屬性:提示信息顯示。當(dāng)鼠標(biāo)指針位于此控件上時,顯示提示信息。 UserData:用戶指定數(shù)據(jù)。 Position:控件對象的尺寸和位置。 Units:設(shè)置控件的位置及

31、大小的單位。 有關(guān)字體的屬性,如 FontAngle, FontName等。(2) 控件回調(diào)函數(shù)的執(zhí)行 BusyAction:處理回調(diào)函數(shù)的中斷。有兩種選項(xiàng):即Cancel:取消中斷事件,queue:排隊(duì)(默認(rèn)設(shè)置)。 ButtonDownFcn屬性:按鈕按下時的處理函數(shù)。 CallBack屬性:是連接程序界面整個程序系統(tǒng)的實(shí)質(zhì)性功能的紐帶。該屬性值應(yīng)該為一個可以直接求值的字符串,在該對象被選中和改變時,系統(tǒng)將自動地對字符串進(jìn)行求值。 CreateFcn:在對象產(chǎn)生過程中執(zhí)行的回調(diào)函數(shù)。 DeleteFcn:刪除對象過程中執(zhí)行的回調(diào)函數(shù)。 Interruptible屬性:指定當(dāng)前的回調(diào)函數(shù)在執(zhí)

32、行時是否允許中斷,去執(zhí)行其他的函數(shù)。(4)控件當(dāng)前狀態(tài)信息 ListboxTop:在列表框中顯示的最頂層的字符串的索引。 Max:最大值。 Min:最小值。 Value:控件的當(dāng)前值。應(yīng)用MATLAB制作這樣一個過程是非常方便的, 我們可以通過GUI操作來看到。該環(huán)境下要設(shè)計(jì)一個界面友好的仿真軟件,一般應(yīng)完成以下兩個步驟:(1)GUI界面設(shè)計(jì)。主要是通過不同的文本框、按鈕等許多工具的使用,設(shè)計(jì)出一個圖形用戶界面。要清楚這個圖形界面的功能是什么,即在圖形界面上的操作會引發(fā)什么樣的結(jié)果。(2)回調(diào)函數(shù)的設(shè)計(jì)。用戶應(yīng)根據(jù)設(shè)計(jì)好的圖形界面的功能,針對各個不同的圖形對象來編寫出能夠?qū)崿F(xiàn)該功能的函數(shù)代碼,

33、確保這個圖形界面能夠完成所預(yù)定的功能。在matlab命令行窗口中輸入guide或點(diǎn)擊matlab界面上面的菜單中的圖標(biāo),打開gui設(shè)計(jì)的圖形界面如圖3.1 。然后拖入所要的圖形控件,按需要修改外觀和空間屬性,直至滿足要求,如圖3.2。設(shè)置屬性點(diǎn)擊guide界面上方的Run按鈕,會生成一個fig文件,一個m文件,其中fig文件就是界面的圖形,m文件是界面的回調(diào)函數(shù),在m文件里每個控件的回調(diào)函數(shù)都已經(jīng)自動生成,控件要做的工作就是在文件框架下定義某些特殊要求的狀態(tài)并補(bǔ)充完整回調(diào)函數(shù)場, 使單擊控件時激活回調(diào)程序完成一定的功能。圖3.1 GUI設(shè)計(jì)的圖形界面圖3.2 Kalman濾波的GUI界面設(shè)計(jì)3

34、.4 Kalman濾波程序回調(diào)函數(shù)的編寫過程基于上面的例子,首先,我們先要引入一個離散控制過程的系統(tǒng)。該系統(tǒng)可用一個線性隨機(jī)微分方程(Linear Stochastic Difference equation)來描述: (3.1)再加上系統(tǒng)的測量值: (3.2)上兩式子中,是k 時刻的系統(tǒng)狀態(tài),是k 時刻對系統(tǒng)的控制量。A 和B 是系統(tǒng)參數(shù),對于多模型系統(tǒng),他們?yōu)榫仃?。是k 時刻的測量值,H 是測量系統(tǒng)的參數(shù),對于多測量系統(tǒng),H 為矩陣。和分別表示過程和測量的噪聲。他們被假設(shè)成高斯白噪聲(White Gaussian Noise),他們的covariance 分別是Q,R(這里我們假設(shè)他們不隨

35、系統(tǒng)狀態(tài)變化而變化)。對于滿足上面的條件(線性隨機(jī)微分系統(tǒng),過程和測量都是高斯白噪聲),卡爾曼濾波器是最優(yōu)的信息處理器。下面我們來用他們結(jié)合他們的covariances 來估算系統(tǒng)的最優(yōu)化輸出(類似上一節(jié)那個溫度的例子)。首先我們要利用系統(tǒng)的過程模型,來預(yù)測下一狀態(tài)的系統(tǒng)。假設(shè)現(xiàn)在的系統(tǒng)狀態(tài)是k,根據(jù)系統(tǒng)的模型,可以基于系統(tǒng)的上一狀態(tài)而預(yù)測出現(xiàn)在狀態(tài): (3.3)式(3.3)中,是利用上一狀態(tài)預(yù)測的結(jié)果,是上一狀態(tài)最優(yōu)的結(jié)果,為現(xiàn)在狀態(tài)的控制量,如果沒有控制量,它可以為0。到現(xiàn)在為止,我們的系統(tǒng)結(jié)果已經(jīng)更新了,可是,對應(yīng)于的covariance 還沒更新。我們用P表示covariance: (

36、3.4)式(3.4)中,是對應(yīng)的covariance,是對應(yīng)的covariance,表示A 的轉(zhuǎn)置矩陣,Q 是系統(tǒng)過程的covariance。式子3.3,3.4 就是卡爾曼濾波器5 個公式當(dāng)中的前兩個,也就是對系統(tǒng)的預(yù)測?,F(xiàn)在我們有了現(xiàn)在狀態(tài)的預(yù)測結(jié)果,然后我們再收集現(xiàn)在狀態(tài)的測量值。結(jié)合預(yù)測值和測量值,我們可以得到現(xiàn)在狀態(tài)(k)的最優(yōu)化估算值: (3.5)其中Kg 為卡爾曼增益(Kalman Gain): (3.6)到現(xiàn)在為止,我們已經(jīng)得到了k 狀態(tài)下最優(yōu)的估算值。但是為了要另卡爾曼濾波器不斷的運(yùn)行下去直到系統(tǒng)過程結(jié)束,我們還要更新k 狀態(tài)下的covariance: (3.7)其中I 為1

37、的矩陣,對于單模型單測量,I=1。當(dāng)系統(tǒng)進(jìn)入k+1 狀態(tài)時,就是式子(3.4)的。這樣,算法就可以自回歸的運(yùn)算下去??柭鼮V波器的原理基本描述了,式子3.3、3.4、3.5、3.6和3.7就是他的5個基本公式。根據(jù)這5個公式,可以很容易的實(shí)現(xiàn)計(jì)算機(jī)的程序。結(jié)合以上例子和描述,把房間看成一個系統(tǒng),然后對這個系統(tǒng)建模。當(dāng)然,我們見的模型不需要非常地精確。我們所知道的這個房間的溫度是跟前一時刻的溫度相同的,所以A=1。沒有控制量,所以=0。因此得出: (3.8)式子(3.4)可以改成: (3.9)因?yàn)闇y量的值是溫度計(jì)的,跟溫度直接對應(yīng),所以 H=1。式子3.5,3.6,3.7 可以改成以下: (3.

38、10) (3.11) (3.12)現(xiàn)在我們模擬一組測量值作為輸入。假設(shè)房間的真實(shí)溫度為 25 度,我模擬了100 個測量值,這些測量值的平均值為25 度,但是加入了標(biāo)準(zhǔn)偏差為幾度的高斯白噪聲。為了令卡爾曼濾波器開始工作,我們需要告訴卡爾曼兩個零時刻的初始值,是 X(0|0)和P(0|0)。他們的值不用太在意,隨便給一個就可以了,因?yàn)殡S著卡爾曼的工作,X 會逐漸的收斂。但是對于P,一般不要取0,因?yàn)檫@樣可能會令卡爾曼完全相信你給定的X(0|0)是系統(tǒng)最優(yōu)的,從而使算法不能收斂。我選了X(0|0)=1度,P(0|0)=2。該系統(tǒng)的真實(shí)溫度為 25 度,紅線是卡爾曼濾波器輸出的最優(yōu)化結(jié)果(該結(jié)果在算

39、法中設(shè)置了Q=0.25,R=0.25)。下面我就可以來編寫“運(yùn)行”按鈕的回調(diào)函數(shù)了?!斑\(yùn)行”按鈕的回調(diào)函數(shù)pushbutton1_Callback:根據(jù)選定的參數(shù)顯示設(shè)計(jì)的Kalman濾波曲線,其程序如下:%點(diǎn)擊“運(yùn)行”按鈕立即運(yùn)行程序,實(shí)現(xiàn)Kalman濾波器設(shè)計(jì)程序function pushbutton1_Callback(hObject, eventdata, handles)% hObject handle to pushbutton1 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)clear all;tempr=25*ones(1,100);tempr_n=25+0.5*randn(1,100);p1_=2;p1=p1_;Q=0.25;R=0.25;A=1;H=1;f1_=1;f1=f1_;for n

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論