卡尔曼滤波(Kalman filtering)一种利用线性系统状态方程,通过系统输入输出观测数据,对系统状态进行最优估计的算法。由于观测数据中包括系统中的噪声和干扰的影响,所以最优估计也可看作是滤波过程。虽然卡尔曼滤波在对过去值的估计、对现在值的估计以及对将来值的估计方面都有应用,但是如果直接将卡尔曼滤波运用到预测上,其实是很不适用的。在预测过程中一般将卡尔曼滤波与ARMA模型结合,可以对ARMA模型的预测值进行修正,并在一定程度上提升arma预测模型的准确度。

卡尔曼滤波在不确定性中融合信息

可以在任何含有不确定信息的动态系统中使用卡尔曼滤波,对系统下一步的走向做出有根据的预测,即使伴随着各种干扰,卡尔曼滤波总是能指出真实发生的情况。

给出第一个估计值,第一个估计方差以及高斯噪声方差,测量值方差,最后将这三个公式放进一个迭代循环里 。

public class Main {private static kalmanfilter = new KalmanFilter();public static void main(String[] arg){kalmanfilter.initial();ArrayList<Integer> list = new ArrayList<Integer>();list.add(-75);list.add(-76);list.add(-81);list.add(-75);list.add(-77);list.add(-76);list.add(-86);int oldvalue = list.get(0);ArrayList<Integer> alist = new ArrayList<Integer>();for(int i = 0; i < list.size(); i++){int value = list.get(i);oldvalue = kalmanfilter.KalmanFilter(oldvalue,value);alist.add(oldvalue);}System.out.println(list);System.out.println(alist);}
}
public class KalmanFilter {/**Kalman Filter*/private Integer predict;private Integer current;private Integer estimate;private double pdelt;private double mdelt;private double Gauss;private double kalmanGain;private final static double Q = 0.00001;private final static double R = 0.1;public void initial(){pdelt = 4;    //系统测量误差 mdelt = 3;    }public Integer KalmanFilter(Integer oldValue,Integer value){//(1)第一个估计值predict = oldValue;current = value;//(2)高斯噪声方差Gauss = Math.sqrt(pdelt * pdelt + mdelt * mdelt) + Q;//(3)估计方差kalmanGain = Math.sqrt((Gauss * Gauss)/(Gauss * Gauss + pdelt * pdelt)) + R;//(4)估计值estimate = (int) (kalmanGain * (current - predict) + predict);//(5)新的估计方差mdelt = Math.sqrt((1-kalmanGain) * Gauss * Gauss);return estimate;}}

卡尔曼滤波实现java相关推荐

  1. imu姿态解算+卡尔曼滤波融合JAVA版(此版本卡拉曼滤波奇点有错误)

    原版地址:IMU9轴卡尔曼滤波 增加mpu6050 陀螺仪零飘矫正,imu算法优化 KalmAndAndIMU 类: import java.util.Vector;public class Kalm ...

  2. Kalman Filter卡尔曼滤波 java实现

    我的理解 重点-理解1:卡尔曼滤波就是-测量值与预测值之间取最优结果-得到最优结果 重点-理解2:卡尔曼滤波就是-上一次最优结果预测当前的值,同时使用观测者修正当前值,得到最优结果 列子:再汽车行驶途 ...

  3. java 二维卡尔曼滤波_卡尔曼滤波(Kalman filtering)算法学习小记

    动画和视频 一个例子 import numpy as np # 模拟数据 t = np.linspace(1, 100, 100) a = 0.5 position = (a * t ** 2) / ...

  4. java 二维卡尔曼滤波_卡尔曼滤波 – Kalman Filtering

    1.    什么是卡尔曼滤波器 (What is the Kalman Filter?) 在学习卡尔曼滤波器之前,首先看看为什么叫"卡尔曼".跟其他著名的理论(例如傅立叶变换,泰勒 ...

  5. java 图像刺绣算法_图像处理:OpenCV3源代码文件解析

    引言 结合冈萨雷斯的<数字图像处理>和Opencv3.0,学习图像处理算法有一段时间了,知道了函数怎么使用,但不知道opencv所用的函数源代码是如何编写的,"知其然,也要知其所 ...

  6. 卡尔曼滤波/粒子滤波融合定位模拟器

    最近稍闲,稍微整理了一下以前的部分代码,虽然写得不够好,但是对于新手也许也有一定的分享价值.具体算法细节我就暂时不讲了,网上太多了. 所以分享这个我用JAVA写的一个模拟器.模拟定位和惯导(或者pdr ...

  7. 通俗理解卡尔曼滤波(无人驾驶感知融合的经典算法)

    前言 我个人有近10年AI教育经验了,中间获得过一些名号,比如北理工校外导师,微软MVP兼CSDN技术专家,本博客也有1700多万PV了,在AI圈内有极高知名度.后2015年和团队一块创业创办AI职教 ...

  8. java基础技能清单

    一.java基础 1.java集合框架学习,数据基本类型学习,Integer缓存等问题,常见面试题.对ArrayList和Collecttion.binarySerch()源码进行学习.DelayQu ...

  9. springboot实现SSE服务端主动向客户端推送数据,java服务端向客户端推送数据,kotlin模拟客户端向服务端推送数据

    SSE服务端推送 服务器向浏览器推送信息,除了 WebSocket,还有一种方法:Server-Sent Events(以下简称 SSE).本文介绍它的用法. 在很多业务场景中,会涉及到服务端向客户端 ...

最新文章

  1. 苹果大战FBI将加速科技圈的加密技术发展?
  2. OpenLayers中地图缩放级别的设置方法
  3. 推荐算法炼丹笔记:序列化推荐算法SASRec
  4. python循环结束执行后面代码_计算机程序中某种代码的反复执行,称为________。Python中的循环有重复一定次数的________,也有重复到某种情况结束的________。...
  5. day7 java的封装
  6. 区块链如何击败 AI、云计算成为最受欢迎技能?
  7. Android 网易云IM开发
  8. 密码疑云 (2)——RSA加密机制需要的数学知识
  9. 如何实现 “中间这几个字要加粗,但是不要太粗,比较纤细的那种粗” ?
  10. 程序员有话说,只务正业就够了吗?
  11. Linux没有网怎么解决。
  12. 海尔为什么要向青年一代提出“修身”解决方案?
  13. let’s talk in englsh P41
  14. SQL基础总结(二):SQL基础
  15. 2020幻影围棋 playChess模块
  16. 第一次直播完的感受,向小伙伴们致歉!
  17. WEB漏洞测试(二)——HTML注入 XSS攻击
  18. 商品展示和陈列VI设计的创意方法
  19. 平板触控笔哪种好?主动式电容笔推荐
  20. 范数及能量最小原理(转自:三眼二郎)

热门文章

  1. Nginx图片服务器访问图片404
  2. idea 拉取gitlab上面的项目
  3. 【数据结构 - 树和二叉树】自学笔记记录(完结)
  4. 03 Opencv部分经典例程赏析
  5. office2021与365你还在纠结吗?快来看看
  6. Minio报错 The access key ID you provided does not exist in our records
  7. 怎么使用迅捷文字转语音软件转换文字
  8. 刘慈欣回应《流浪地球》热点问题:承认有些设定有bug
  9. Python 金融数据分析_8_Python基础(2)
  10. 集合--Set集合--HashSet类、LinkedHashSet类、TreeSet类及其自然排序