卡尔曼滤波器学习笔记

卡尔曼滤波器具有两个部分的信息更新过程:时间更新过程和观测更新过程。
考虑如下的状态空间模型描述的系统:
在这里插入图片描述
其核心公式为:

  1. 对状态做一步预测:
    在这里插入图片描述

  2. 一步预测协方差阵:
    在这里插入图片描述

  3. 求滤波增益矩阵:
    在这里插入图片描述

  4. 状态更新:
    在这里插入图片描述

  5. 协方差更新:
    在这里插入图片描述
    一维Kalman滤波器Matlab仿真:

function kalmanfilter1D
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%状态方程:x(k)=Fx(k-1)+GW(k)
%测量方程:z(k)=Hx(K)+v(k)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
close all;clear;
%一维Kalman滤波应用仿真实例
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
F=1;%状态转移矩阵
G=1;%噪声驱动矩阵
H=1;%观测矩阵
Q=0.0001;%过程噪声方差
R=0.0025;%观测噪声方差
T=100;%10ms
W=sqrt(Q)*randn(1,T);%随机过程噪声
V=sqrt(R)*randn(1,T);%随机测量噪声
I=eye(1);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
X=zeros(1,T);
X(1,1)=10.00;%状态初始化
Z=zeros(1,T);
Z(1,1)=10.01;%观测值初始化
Xkf=zeros(1,T);
Xkf(1,1)=Z(1,1);%Kalman滤波器状态初始化
P=zeros(1,T);
P(1,1)=0.0001;%协方差初始化
for k=2:T
    X(1,k)=F*X(1,k-1)+G*W(1,k);%状态方程
    Z(1,k)=H*X(1,k)+V(1,k);%观测方程
    %%%%%状态预测%%%%%%%%%%%
    Xpre=H*Xkf(1,k-1);
    %%%%%协方差预测%%%%%%%%%
    Ppre=F*P(k-1)*F'+Q;
    %%%%%计算卡尔曼增益%%%%%
    K=Ppre*inv(H*Ppre*H'+R);
    e=Z(k)-H*Xpre; %计算新息
    %%%%%状态更新%%%%%%%%%%%
    Xkf(1,k)=Xpre+K*e;
    %%%%%协方差更新%%%%%%%%%
    P(1,k)=(I-K*H)*Ppre;
end
%画图
figure
hold on;axis([0 T 9.5 10.5])
plot(1:T,X(1,1:k),'-k');%真实值
plot(1:T,Z(1,1:k),'-ko');%测量值
plot(1:T,Xkf(1,1:k),'-r.');%滤波值

仿真结果:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值