KF计算过程

- 已知:
 1,观测值
 2,观测值方差,可以理解为噪声,一般为高斯 
 3,初始状态
 4,状态协方差矩阵
 5,状态转移矩阵
 6,状态转移协方差矩阵
 7,观测矩阵
 8,观测噪声方差,观测噪声
 9,观测矩阵
 10,观测协方差矩阵

- 求:
 1,最新状态

- 进入迭代:
 a):由初始状态,根据状态转移矩阵计算当前状态
 b):由初始状态协方差计算当前状态协方差矩阵
 c):计算kelman增益
 d):更新状态
    I,计算偏差(观测值减去观测矩阵和当前状态的乘积)
    II,当前状态加上kelman增益乘以偏差
    III,计算值赋值作为最新状态
 e):更新协方差矩阵
    I,kelman增益乘以观测矩阵乘以当前状态协方差矩阵
    II,当前状态协方差矩阵减去I的值
    III,计算值赋值作为最新状态协方差矩阵

demo on matlab:

clear all;
close all;
clc;

Z=(1:100); %观测值
noise=randn(1,100); %方差为1的高斯噪声
Z=Z+noise;

X=[1; 1]; %状态
P=[1 0; 0 1]; %状态 协方差矩阵
F=[1 1; 0 1]; %状态转移矩阵

Q=[0.0001, 0; 0 0.0001]; %状态转移 协方差矩阵

H=[1 0]; %观测矩阵
R = 1;
%R= [2, 0]; %观测噪声方差  观测 协方差矩阵
%R = [2,0;0,2];

figure;
hold on;

for i=1:100
  %init
  X_ = F*X;
  P_ = F*P*F'+Q;

  %kelman enhance
  K = P_*H'/(H*P_*H'+R);

  %update
  X = X_+K*(Z(i)-H*X_);

  P = (eye(2)-K*H)*P_;

  plot(X(1),X(2),'.'); %画点,横轴表示位置,纵轴表示速度
end
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值