簡單的一個程序實現卡爾曼濾波驗證

話不說多說,本文假設的是一個以1米每秒勻速駕駛的小車,使用的octave軟件,咋們直接看程序實現:

z=(1:100); %觀測值
noise=randn(1,100); %方差為1的高斯噪聲
z=z+noise;
X=[0;0]; %狀態
P=[1 0;0 1]; %狀態協方差矩陣
F=[1 1;0 1]; %狀態轉移矩陣
Q=[0.0001,0;0 0.0001]; %狀態轉移協方差矩陣
H=[1 0]; %觀測矩陣
R=1; %觀測噪聲方差
figure;
hold on;
for i=1:100
 X_=F*X;
 P_=F*P*F'+Q;
 K=P_*H'/(H*P_*H'+R);
 X=X_+K*(z(i)-H*X_);
 P=(eye(2)-K*H)*P_;
 
 plot(X(1),X(2));
endforxi

下面看看效果:

簡單的一個程序實現卡爾曼濾波驗證

可以開出,只進行了幾次迭代,出的結果就保持在1左右很不錯了。

歡迎大家評論交流哈。


分享到:


相關文章: