kalman filter java_Kalman Filter算法详解
关键词:卡尔曼滤波 线性最优估计 迭代 预测值 估计值 协方差矩阵 状态转移方程 观测方程 最小均方估计 预测+矫正
经典的卡尔曼滤波是一个迭代的线性的最优状态估计器。利用最小均方误差原理,可以保证状态值的估计是最优的。它只需要知道上次的状态估计值和当前的测量值,就可以预测到当前的最优估计值,适用于实际系统,共需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算法详解相关推荐
- 多目标跟踪(MOT)中的卡尔曼滤波(Kalman filter)和匈牙利(Hungarian)算法详解
多目标跟踪(MOT)中的卡尔曼滤波(Kalman filter)和匈牙利(Hungarian)算法详解 1. 概览 在开始具体讨论卡尔曼滤波和匈牙利算法之前,首先我们来看一下基于检测的目标跟踪算法的大 ...
- html页面设置拦截器,SpringBoot拦截器Filter的使用方法详解
SpringBoot拦截器Filter的使用方法详解 发布时间:2020-08-27 22:44:03 来源:脚本之家 阅读:107 作者:玉天恒 前言: 最新Servlet 3.0拦截器的使用 1. ...
- 基于多相滤波器的数字信道化算法详解(Python, Verilog代码已开源)
基于多相滤波器的数字信道化算法详解 推导过程 总结 仿真 本文详细介绍了基于多相滤波器的数字信道化算法的推导过程, 如果您在阅读的过程中发现算法推导过程中有任何错误, 请不吝指出. 此外, 进入我的G ...
- SF图像滤镜/美颜/美妆算法详解与实战
本专栏将结合本热多年相关经验,从传统算法到火热的AI算法,给大家详细讲解目前在PC图像软件.手机图像处理类应用app,以及视频直播等应用类型中,图像视频的滤镜特效,人像美颜美妆特效的算法理论,并结合具 ...
- Apollo6.0代码Lattice算法详解——Part6:轨迹评估及碰撞检测对象构建
Apollo6.0代码Lattice算法详解--Part6:轨迹评估及碰撞检测对象构建 0.前置知识 1.涉及主要函数 2.函数关系 3.部分函数代码详解 3.1 lattice_planner.cc ...
- 点云配准NDT (P2D)算法详解
点云配准NDT (P2D)算法详解 最近了解了一些关于点云配准算法NDT的相关文章,进行总结一下. NDT算法的关键是其利用正态分布对参考点云进行了重新表示,使用点云在一个模型特定位置的似然值而不是直 ...
- Deformable ConvNet算法详解(对象尺寸/形状变换)
Deformable ConvNet算法详解(DCN) 算法背景 算法细节 Deformable convolution Deformable RoI pooling Deformable ConvN ...
- YOLOv4算法详解
YOLOv4: Optimal Speed and Accuracy of Object Detection-论文链接-代码链接 目录 1.需求解读 2.YOLOv4算法简介 3.YOLOv4算法详解 ...
- 敏感词或关键词过滤,DFA算法详解及python代码实现
一.前言 近期项目有了一个过滤敏感词的功能需求,在网上找了一些方法及解说,发现DFA算法比较好用,容易实现,但很多文章解释得不太清楚,这里将其详细描述,并用python代码实现. 二.DFA算法详解 ...
- Matlab人脸检测算法详解
这是一个Matlab人脸检测算法详解 前言 人脸检测结果 算法详解 源代码解析 所调用函数解析 bwlabel(BW,n) regionprops rectangle 总结 前言 目前主流的人脸检测与 ...
最新文章
- Hibernate 封装的通用DAO基础类
- AI强势来袭,锁上手机就真的安全了吗?
- 用c语言找出第123个素数,在C语言中查找第N个素数
- lists and Variables supported as JIT inputs/outputs. Dictionaries and strings are also accepted but
- RedHat 5.4 RHCE DHCP学习笔记
- ABP VNext从单体切换到微服务
- central maven_一键发布到Maven Central的方法
- Oracle ORA-07445 [evaopn3()+384] 错误 分析
- Android教程之android平台水波效果!提供源码!
- 复数基础——虚数和复数_5
- 基于python实现遗传算法
- 【图精】徐克镜头里的十大美人
- Java Redis 做分布式锁
- struts2生成随机验证码图片
- java 弹出另存为_java如何实现 io流传输过来的文件,提示另存为弹出窗口?
- weblogic部署war
- 【愚公系列】2022年04月 微信小程序-实时音视频播放
- 总结输入阻抗和输出阻抗
- Hostapd.conf详细释义
- think服务器换系统,ThinkServer TD340服务器安装操作系统[转]
热门文章
- 微信小程序分包加载,分包加载的优势
- C++无法打开FDB文件
- windows10 使用msys2编译 OpenBLAS
- 无法为该计算机验证,电脑输入验证码总是提示错误该怎么解决?
- Idea报错source 1.6 中不支持 diamond 运算符 (请使用 -source 7 或更高版本以启用 diamond 运算符)
- matlab 曲线拟合插值问题
- 如何借助现有股票量化交易平台编写策略和回测分析
- 51单片机实战教程基础硬件篇(二 电子元件原理图库设计教程)
- 佳能hdr_(摄影后期)在佳能DPP中制造HDR,改善照片画质转载
- matalb第二类完全椭圆积分ellipke