卡尔曼滤波算法它能够从一系列的不完全及包含噪声的测量中,估计动态系统的状态,实践中得到广泛应用,场景包括控制系统参数估计,移动预测等等,在深度学习中也常常用来配合神经网络输出做后处理,应用于目标跟踪等场景, 自动化专业在讲现代控制理论的时候会讲。

测试代码在:

GitHub - 13824125580/kalmanfilter-cpp: A basic Kalman Filter implementation in C++ using the Eigen library.https://github.com/13824125580/kalmanfilter-cpp.git

代码下载后,编译运行步骤如下。

1.安装eigen3

eigen3是一套高效的线性代数运行库,安装命令如下:

sudo apt-get install libeigen3-dev

具体用法可以参考下面这篇博客

ubuntu18.04安装eigen算法库_papaofdoudou的博客-CSDN博客_ubuntu18安装eigen

2.编译源码

源码下载后的目录结构如下图所示:

用例使用cmake编译,创建编译目录build,进入build目录,执行 cmake ../生成编译文件

之后执行make 编译,编译后,生成可执行测试程序kalman-test文件

测试

执行kalman-test用例,输出如下:

测试输出中的x_hat则是对下图中的测量值的经过卡尔曼滤波算法之后的输出值。

matlab kalman滤波实现

N=200;
w(1)=0;
w=randn(1,N)  % White Gaussian Noise of Predictionx(1)=25;
a=1;  % prediction parameter
for k=2:N;x(k)=a*x(k-1)+w(k-1);
endV=randn(1,N); % White Gaussian Noise of Measurement
q1=std(V);
Rvv=q1.^2; % covariance of Measurement
q2=std(x);
Rxx=q2.^2;
q3=std(w);
Rww=q3.^2; % covariance of prediction
c=0.2;   % measurement parameter
Y=c*x+V;p(1)=10;  % initial prediction result
s(1)=26;  % initial optimal result
for t=2:N;p1(t)=a.^2*p(t-1)+Rww;  % covariance of t-1b(t)=c*p1(t)/(c.^2*p1(t)+Rvv); % kalman gains(t)=a*s(t-1)+b(t)*(Y(t)-a*c*s(t-1)); % optimal resultp(t)=p1(t)-c*b(t)*p1(t); % covariance of t
endt=1:N;
plot(t,s,'r',t,Y,'g',t,x,'b',t,w,'m');

用OCTAVE验证:


参考资料:

卡尔曼滤波器|Little Stone - Huan Li's Blog

结束

卡尔曼滤波算法的代码验证相关推荐

  1. C语言 | 基于51单片机实现MPU6050的卡尔曼滤波算法(代码类2)

    github:https://github.com/MichaelBeechan CSDN:https://blog.csdn.net/u011344545 之前写过一个博客(代码分享:单片机开发 | ...

  2. C语言 | 基于51单片机实现MPU6050的卡尔曼滤波算法(代码类1)

    github:https://github.com/MichaelBeechan CSDN:https://blog.csdn.net/u011344545 ===================== ...

  3. C语言 | 基于MPU6050的卡尔曼滤波算法(代码类)

    博主github:https://github.com/MichaelBeechan 博主CSDN:https://blog.csdn.net/u011344545 //float gyro_m:陀螺 ...

  4. 卡尔曼滤波算法及c语言代码,卡尔曼滤波算法及C语言代码

    卡尔曼滤波算法及C语言代码 卡尔曼滤波简介及其算法实现代码 卡尔曼滤波算法实现代码(C,C++分别实现) 卡尔曼滤波器简介 近来发现有些问题很多人都很感兴趣.所以在这里希望能尽自己能力跟大家讨论一些力 ...

  5. C语言 | 卡尔曼滤波算法2——算法分析

    github:https://github.com/MichaelBeechan CSDN:https://blog.csdn.net/u011344545 ===================== ...

  6. 代码验证约瑟夫环百科词条中的故事(Python)——约瑟夫斯的故事、数学家加帕斯讲的故事,体验算法模板的奇妙。

    [点击此处跳转笔记正文] Python 官网:https://www.python.org/ Free:大咖免费"圣经"教程< python 完全自学教程>,不仅仅是基 ...

  7. 解读基于多传感器融合的卡尔曼滤波算法

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转自|3D视觉工坊 卡尔曼滤波器是传感器融合工程师用于自动驾驶 ...

  8. 平衡小车卡尔曼滤波算法

    最近研究STM32的自平衡小车,发现有两座必过的大山,一为卡尔曼滤波,二为PID算法. 网上看了很多关于卡尔曼滤波的代码,感觉写得真不咋地.一怒之下,自己重写,不废话,贴代码 [pre lang=&q ...

  9. 卡尔曼滤波算法-简易版

    代码实现: /********************************************************************************* @file bsp_k ...

最新文章

  1. 算法系列之住酒店最少天数问题
  2. 库存管理系统的开发过程!
  3. InetAddress相关笔记
  4. 分布式监控报警平台Centreon之:Centreon依赖安装
  5. java断言assert初步使用:断言开启、断言使用
  6. java 泰勒级数_鸡群优化算法(CSO)、蜻蜓算法(DA)、乌鸦搜索算法(CSA)、泰勒级数(Taylor series)...
  7. go语言php编译,Golang模板编译引擎FET
  8. python 泰坦尼克号存活率分析
  9. 如何写一个简单的Web Service
  10. 用计算机弹让我做你的眼睛,童珺《让我做你的眼睛 (改编版)》[FLAC/MP3-320K]
  11. 企业如何布局数字化营销,打造私域运营闭环实现增长?
  12. 怎么样向云服务器上传文件_怎样把文件上传到云服务器
  13. SATA硬盘在安装OS时注意AHCI模式
  14. 键盘里Insert作用
  15. 简单的python程序实现99乘法口诀表
  16. flag{e2f34a3a-9972-4ba5-bdeb-ff7d524d87cb} preg_match implode
  17. Office WORD WPS如何设置PPT播放全屏
  18. php从照片中抠出人脸,PS怎样将一张图片上的人脸抠取五官下来到另一张图片
  19. python中的魔方方法
  20. 解决ONENOTE for WIN10同步问题,E000006B同步错误

热门文章

  1. 利用XAG在RAC环境下实现GoldenGate自动Failover
  2. 密码学系列 - 椭圆曲线签名的基本原理
  3. 查看lv大小 linux,扩展AIX上的LV大小
  4. 【历史上的今天】12 月 3 日:世界上第一条短信;Fortran 语言之父诞生;百度贴吧上线
  5. Portraiture2023最新版本下载及PS磨皮的方法教程
  6. 如何用python处理pdf_用Python处理PDF
  7. win10给鼠标右键添加快捷功能
  8. 突然不能从主机向虚拟机上拷贝文件了
  9. SQL常用的操作语句
  10. 程序员难以逃避的几个坎儿及解决方法