卡爾�濾波�是一�(gè)“optimal recursive data processing algorithm(化自回歸數(shù)�(jù)處理算法)�。廣泛應(yīng)用已�(jīng)超過30�,包括機(jī)器人�(dǎo)�,控��傳感��(shù)�(jù)融合甚至在軍事方面的雷達(dá)系統(tǒng)以及�(dǎo)彈追蹤等等。近年來更被�(yīng)用于�(jì)算機(jī)圖像處理,例如頭臉識�,圖像分割,圖像邊緣檢測等等�
首先,引入一�(gè)離散控制過程的系�(tǒng)。該系統(tǒng)可用一�(gè)線性隨�(jī)微分方程(Linear Stochastic Difference equation)來描述�
X(k)=A X(k-1)+B U(k)+W(k)
再加上系�(tǒng)的測量值:
Z(k)=H X(k)+V(k)
上兩式子�,X(k)是k�(shí)刻的系統(tǒng)狀�(tài),U(k)是k�(shí)刻對系統(tǒng)的控制量。A和B是系�(tǒng)參數(shù),對于多模型系統(tǒng),他�?yōu)榫仃?。Z(k)是k�(shí)刻的測量值,H是測量系�(tǒng)的參�(shù),對于多測量系統(tǒng),H為矩�。W(k)和V(k)分別表示過程和測量的噪聲。他們被假設(shè)成高斯白噪聲(White Gaussian Noise),他們的covariance 分別是Q,R(這里假設(shè)不隨系統(tǒng)狀�(tài)變化而變化)�
對于滿足上面的條�(線性隨�(jī)微分系統(tǒng),過程和測量都是高斯白噪�)�卡爾曼濾波器是的信息處理�。下面我們來用他們結(jié)合他們的covariances 來估算系�(tǒng)的化輸出(類似上一節(jié)那�(gè)溫度的例子)�
首先利用系統(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)�
X(k|k-1)=A X(k-1|k-1)+B U(k) ……�.. (1)
�(1)�,X(k|k-1)是利用上一狀�(tài)�(yù)測的�(jié)果,X(k-1|k-1)是上一狀�(tài)的結(jié)�,U(k)為現(xiàn)在狀�(tài)的控制量,如果沒有控制量,它可以�0�
到現(xiàn)在為�,我們的系統(tǒng)�(jié)果已�(jīng)更新了,可是,對�(yīng)于X(k|k-1)的covariance還沒更新。我們用P表示covariance�
P(k|k-1)=A P(k-1|k-1) A�+Q ……� (2)
�(2)中,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�2就是卡爾曼濾波器5�(gè)公式�(dāng)中的前兩�(gè),也就是對系�(tǒng)的預(yù)��
�(xiàn)在我們有了現(xiàn)在狀�(tài)的預(yù)測結(jié)�,然后我們再收集�(xiàn)在狀�(tài)的測量�。結(jié)合預(yù)測值和測量值,我們可以得到現(xiàn)在狀�(tài)(k)的化估算值X(k|k)�
X(k|k)= X(k|k-1)+Kg(k) (Z(k)-H X(k|k-1)) ……� (3)
其中Kg為卡爾曼增益(Kalman Gain)�
Kg(k)= P(k|k-1) H� / (H P(k|k-1) H� + R) ……� (4)
到現(xiàn)在為�,我們已�(jīng)得到了k狀�(tài)下的估算值X(k|k)。但是為了要另卡爾曼濾波器不斷的�(yùn)行下去直到系�(tǒng)過程�(jié)束,我們還要更新k狀�(tài)下X(k|k)的covariance�
P(k|k)=(I-Kg(k) H)P(k|k-1) ……� (5)
其中I �1的矩陣,對于單模型單測量,I=1。當(dāng)系統(tǒng)�(jìn)入k+1狀�(tài)�(shí),P(k|k)就是式子(2)的P(k-1|k-1)。這樣,算法就可以自回歸的�(yùn)算下��
卡爾曼濾波器的原理基本描述了,式�1�2�3�4�5就是他的5 �(gè)基本公式。根�(jù)�5�(gè)公式,可以很容易的實(shí)�(xiàn)�(jì)算機(jī)的程��
舉例子來說明卡爾曼濾波器的工作過�,配以程序模擬結(jié)��
先把房間看成一�(gè)系統(tǒng),然后對這�(gè)系統(tǒng)建模。當(dāng)然,我們見的模型不需要非常地精確。我們所知道的這�(gè)房間的溫度是跟前一�(shí)刻的溫度相同的,所以A=1。沒有控制量,所以U(k)=0。因此得出:
X(k|k-1)=X(k-1|k-1) ……�.. (6)
式子�2)可以改成:
P(k|k-1)=P(k-1|k-1) +Q ……� (7)
�?yàn)闇y量的值是溫度�(jì)�,跟溫度直接對應(yīng),所以H=1。式�3�4�5可以改成以下�
X(k|k)= X(k|k-1)+Kg(k) (Z(k)-X(k|k-1)) ……� (8)
Kg(k)= P(k|k-1) / (P(k|k-1) + R) ……� (9)
P(k|k)=�1-Kg(k))P(k|k-1) ……� (10)
�(xiàn)在我們模擬一組測量值作為輸�。假�(shè)房間的真�(shí)溫度�25�,我模擬�200�(gè)測量�,這些測量值的平均值為25�,但是加入了�(biāo)�(zhǔn)偏差為幾度的高斯白噪聲(在圖中為�(lán)線)�
為了令卡爾曼濾波器開始工作,我們需要告訴卡爾曼兩�(gè)零時(shí)刻的初始�,是X(0|0)和P(0|0)。他們的值不用太在意,隨便給一�(gè)就可以了,因?yàn)殡S著卡爾曼的工作,X會逐漸的收�。但是對于P,一般不要取0,因?yàn)檫@樣可能會令卡爾曼完全相信你給定的X(0|0)是系�(tǒng)�,從而使算法不能收斂。我選了X(0|0)=1�,P(0|0)=10�
該系�(tǒng)的真�(shí)溫度�25�,圖中用黑線表示。圖中紅線是卡爾曼濾波器輸出的化�(jié)果(該結(jié)果在算法中設(shè)置了Q=1e-6,R=1e-1�
Kalman_filter
Kalman_smoother - implements the RTS equations
Learn_kalman - finds maximum likelihood estimates of the parameters using EM
Sample_lds - generate random samples
AR_to_SS - convert Auto Regressive model of order k to State Space form
SS_to_AR
Learn_AR - finds maximum likelihood estimates of the parameters using least squares
維庫電子通,電子知識,一查百��
已收錄詞�168694�(gè)