关键词:卡尔曼滤波 线性最优估计 迭代 预测值 估计值 协方差矩阵 状态转移方程 观测方程 最小均方估计 预测+矫正

经典的卡尔曼滤波是一个迭代的线性的最优状态估计器。利用最小均方误差原理,可以保证状态值的估计是最优的。它只需要知道上次的状态估计值和当前的测量值,就可以预测到当前的最优估计值,适用于实际系统,共需5个方程既可以得到完成一次迭代。卡尔曼滤波器在singnal processing navigation control etc 应用广泛。

step1 :时间更新(预测predict)

根据状态转移方程得到k时刻的预测值(先验估计值):  X"(k) = AX(k-1|k-1) + Bu(k);

预测值(先验估计值)的协方差:P(k|k-1) = AP(k-1|k-1)AT+Q;

step2 :状态更新(校正correct)

计算误差增益Kalman gain;Kk= P(k|k-1)HT[R+HP(k|k-1)HT]-1,  其中[R+HP(k|k-1)HT]表示新息的协方差,Kalman gain越大,表示预测值对估计值的影响越小,即更相信测量值;

计算最优估计(后验估计):X(k|k) = X(k-1|k-1) + Kk[Z(k)-HX(k|k-1)],其中Z(k)表示测量值,由观测方程Z(k)=HX(k)可得,这就是我们要到最优估计输出;

更新最有估计误差矩阵(后验估计协方差):P(k|k) = [I-KkH]P(k|k-1)

下面是Kalman filter 仿真程序 using matlab

clear all

close all

clc

A=1;

H=1;

x(1)=0;%初始状态

p(1)=1;%后验协方差估计

w1=randn(1,10000);%加速度计白噪声

t=[0.01:0.01:100];

z=sin(10*t)+w1;%加速度计测量值

R=20;%测量协方差矩阵

Q=1;%过程状态协方差矩阵for k=1:9999 %卡尔曼滤波器滤波过程

p_(k)=A*p(k)*A'+Q;

K(k)=p_(k)*H'*inv(H*p_(k)*H'+R);

x(k+1)=A*x(k)+K(k)*(z(k)-H*A*x(k));

p(k+1)=(1-K(k)*H)*p_(k);

end

figure(1),clf

plot(t,z,'b')

grid on

axis([3,5,-6,6])

title('仿真加速度计的输出')

xlabel('时间(秒)'),ylabel('仿真加速度计输出(度)')

figure(2),clf

plot(t,x,'b',t,sin(10*t),'r')

grid on

axis([3,5,-6,6])

title('加速度计估计')

legend('加速度计估计值','加速度计真值')

xlabel('时间(秒)'),ylabel('加速度计输出(度)')

测量值如下(含有测量造成v(k))

滤波效果如下,图中蓝色曲线为估计值

参考资料:

[1]https://en.wikipedia.org/wiki/Kalman_filter#Predict

[2]http://blog.csdn.net/xiahouzuoxin/article/details/39582483

kalman filter java_Kalman Filter算法详解相关推荐

  1. 多目标跟踪(MOT)中的卡尔曼滤波(Kalman filter)和匈牙利(Hungarian)算法详解

    多目标跟踪(MOT)中的卡尔曼滤波(Kalman filter)和匈牙利(Hungarian)算法详解 1. 概览 在开始具体讨论卡尔曼滤波和匈牙利算法之前,首先我们来看一下基于检测的目标跟踪算法的大 ...

  2. html页面设置拦截器,SpringBoot拦截器Filter的使用方法详解

    SpringBoot拦截器Filter的使用方法详解 发布时间:2020-08-27 22:44:03 来源:脚本之家 阅读:107 作者:玉天恒 前言: 最新Servlet 3.0拦截器的使用 1. ...

  3. 基于多相滤波器的数字信道化算法详解(Python, Verilog代码已开源)

    基于多相滤波器的数字信道化算法详解 推导过程 总结 仿真 本文详细介绍了基于多相滤波器的数字信道化算法的推导过程, 如果您在阅读的过程中发现算法推导过程中有任何错误, 请不吝指出. 此外, 进入我的G ...

  4. SF图像滤镜/美颜/美妆算法详解与实战

    本专栏将结合本热多年相关经验,从传统算法到火热的AI算法,给大家详细讲解目前在PC图像软件.手机图像处理类应用app,以及视频直播等应用类型中,图像视频的滤镜特效,人像美颜美妆特效的算法理论,并结合具 ...

  5. Apollo6.0代码Lattice算法详解——Part6:轨迹评估及碰撞检测对象构建

    Apollo6.0代码Lattice算法详解--Part6:轨迹评估及碰撞检测对象构建 0.前置知识 1.涉及主要函数 2.函数关系 3.部分函数代码详解 3.1 lattice_planner.cc ...

  6. 点云配准NDT (P2D)算法详解

    点云配准NDT (P2D)算法详解 最近了解了一些关于点云配准算法NDT的相关文章,进行总结一下. NDT算法的关键是其利用正态分布对参考点云进行了重新表示,使用点云在一个模型特定位置的似然值而不是直 ...

  7. Deformable ConvNet算法详解(对象尺寸/形状变换)

    Deformable ConvNet算法详解(DCN) 算法背景 算法细节 Deformable convolution Deformable RoI pooling Deformable ConvN ...

  8. YOLOv4算法详解

    YOLOv4: Optimal Speed and Accuracy of Object Detection-论文链接-代码链接 目录 1.需求解读 2.YOLOv4算法简介 3.YOLOv4算法详解 ...

  9. 敏感词或关键词过滤,DFA算法详解及python代码实现

    一.前言 近期项目有了一个过滤敏感词的功能需求,在网上找了一些方法及解说,发现DFA算法比较好用,容易实现,但很多文章解释得不太清楚,这里将其详细描述,并用python代码实现. 二.DFA算法详解 ...

  10. Matlab人脸检测算法详解

    这是一个Matlab人脸检测算法详解 前言 人脸检测结果 算法详解 源代码解析 所调用函数解析 bwlabel(BW,n) regionprops rectangle 总结 前言 目前主流的人脸检测与 ...

最新文章

  1. Hibernate 封装的通用DAO基础类
  2. AI强势来袭,锁上手机就真的安全了吗?
  3. 用c语言找出第123个素数,在C语言中查找第N个素数
  4. lists and Variables supported as JIT inputs/outputs. Dictionaries and strings are also accepted but
  5. RedHat 5.4 RHCE DHCP学习笔记
  6. ABP VNext从单体切换到微服务
  7. central maven_一键发布到Maven Central的方法
  8. Oracle ORA-07445 [evaopn3()+384] 错误 分析
  9. Android教程之android平台水波效果!提供源码!
  10. 复数基础——虚数和复数_5
  11. 基于python实现遗传算法
  12. 【图精】徐克镜头里的十大美人
  13. Java Redis 做分布式锁
  14. struts2生成随机验证码图片
  15. java 弹出另存为_java如何实现 io流传输过来的文件,提示另存为弹出窗口?
  16. weblogic部署war
  17. 【愚公系列】2022年04月 微信小程序-实时音视频播放
  18. 总结输入阻抗和输出阻抗
  19. Hostapd.conf详细释义
  20. think服务器换系统,ThinkServer TD340服务器安装操作系统[转]

热门文章

  1. 微信小程序分包加载,分包加载的优势
  2. C++无法打开FDB文件
  3. windows10 使用msys2编译 OpenBLAS
  4. 无法为该计算机验证,电脑输入验证码总是提示错误该怎么解决?
  5. Idea报错source 1.6 中不支持 diamond 运算符 (请使用 -source 7 或更高版本以启用 diamond 运算符)
  6. matlab 曲线拟合插值问题
  7. 如何借助现有股票量化交易平台编写策略和回测分析
  8. 51单片机实战教程基础硬件篇(二 电子元件原理图库设计教程)
  9. 佳能hdr_(摄影后期)在佳能DPP中制造HDR,改善照片画质转载
  10. matalb第二类完全椭圆积分ellipke