【問題總結】視頻教程:卡爾曼濾波器的原理以及在MATLAB中的實現

一、先看視頻

轉載地址:https://blog.csdn.net/revolver/article/details/37830675

運行環境:win7 旗艦版 matlab R2018a

視頻來源@山貓小隊長

優酷:http://v.youku.com/v_show/id_XNzQwMTMwOTQ0.html;

B站:https://www.bilibili.com/video/av4356232/;

youtube:https://www.youtube.com/watch?v=2-lu3GNbXM8;

二、視頻代碼
clc
clear
close

Z=(1:100); %觀測值  
noise=randn(1,100); %方差爲1的高斯噪聲  
Z=Z+noise;  
  
X=[0; 0]; %k-1時刻的狀態  
P=[1 0; 0 1]; %k-1時刻的狀態協方差矩陣  
F=[1 1; 0 1]; %狀態轉移矩陣  
Q=[0.0001 0; 0.0001 0]; %狀態轉移協方差矩陣  
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_;    %eye(2)生成二階單位矩陣
  plot(X(1),X(2),'.r'); %畫點,橫軸表示位置,縱軸表示速度,'.r'表示紅點
end  
三、問題總結

原視頻是在Octave上面演示的,一直不顯示,後來才發現是plot函數的用法不夠嚴謹,加上'.r'就好了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章