版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sinat_20265495/article/details/51006311
kalman filter最为核心的内容是体现它最优化估计和递归特点的5条公式。
下面利用C语言编程实现Kalman Filter Algorithm,代码如下:
  1. #include "stdio.h"
  2. #include "stdlib.h"
  3. #include "math.h"
  4. double frand()
  5. {
  6. return 2 * ((rand() / (double)RAND_MAX) - 0.5);//随机噪声
  7. }
  8. void main()
  9. {
  10. float x_last = 0;
  11. float p_last = 0.02;
  12. float Q = 0.018;
  13. float R = 0.542;
  14. float kg;
  15. float x_mid;
  16. float x_now;
  17. float p_mid;
  18. float p_now;
  19. float z_real = 0.56;
  20. float z_measure;
  21. float summerror_kalman = 0;
  22. float summerror_measure = 0;
  23. int i;
  24. x_last = z_real + frand()*0.03;
  25. x_mid = x_last;
  26. for (i = 0; i < 20;i++)
  27. {
  28. x_mid = x_last;
  29. p_mid = p_last + Q;
  30. kg = p_mid / (p_mid + R);
  31. z_measure = z_real + frand()*0.03;//测量值
  32. x_now = x_mid + kg*(z_measure - x_mid);//估计出的最有值
  33. p_now = (1 - kg)*p_mid;//最优值对应的协方差
  34. printf("Real position:%6.3f\n", z_real);
  35. printf("Measure position:%6.3f [diff:%.3f]\n", z_measure, fabs(z_real - z_measure));
  36. printf("Kalman position: %6.3f [diff:%.3f]\n", x_now, fabs(z_real - x_now));
  37. printf("\n\n");
  38. summerror_kalman += fabs(z_real - x_now);
  39. summerror_measure += fabs(z_real - z_measure);
  40. p_last = p_now;
  41. x_last = x_now;
  42. }
  43. printf("总体测量误差 :%f\n", summerror_measure);
  44. printf("总体卡尔曼滤波误差:%f\n", summerror_kalman);
  45. printf("卡尔曼误差所占比例:%d%%\n", 100 - (int)((summerror_kalman / summerror_measure) * 100));
  46. getchar();
  47. }
运行结果:

转载自:https://blog.csdn.net/sinat_20265495/article/details/51006311

卡尔曼滤波算法及C语言实现(转载)相关推荐

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

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

  2. 卡尔曼滤波算法c语言stm32,卡尔曼滤波算法及C语言实现_源代码

    a往南向北 2019-01-16 20:39:20  11340  收藏 111 分类专栏: C语言嵌入式 文章标签: 卡尔曼滤波 C代码 卡尔曼滤波理论很容易就可以在MATLAB软件环境下实现,但是 ...

  3. 卡尔曼滤波算法及C语言实现_源代码

    卡尔曼滤波理论很容易就可以在MATLAB软件环境下实现,但是,实际的硬件板子上还是需要C语言,当然可以自动代码生成,还有一种就是直接手动编写C语言. 1.前言 在google上搜索卡尔曼滤波,很容易找 ...

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

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

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

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

  6. 迪杰斯特拉算法(C语言实现)

    迪杰斯特拉算法(C语言实现) 如上图,求以a为源点到个顶点的最短路劲. #include "stdio.h" #include "stdlib.h" //用一个 ...

  7. 【转】卡尔曼滤波算法详细推导(相当值得一看)

    转载自   卡尔曼滤波算法详细推导     这一篇对预备知识的介绍还是很好的,过程与原理讲解也很到位,应该是目前看到中文里最好的讲解了. 一.预备知识 1.协方差矩阵     是一个维列向量,是的期望 ...

  8. matlab温度数据怎么滤波_卡尔曼滤波算法思想理解 Kalman filter 第一篇

    卡尔曼滤波算法思想理解 Kalman filter 第一篇 最近在初步的理解目标跟踪的领域, 其中一个非常经典的算法卡尔曼滤波Kalman filter是需要有很好的理解才行, 由于已经脱离了学校,懂 ...

  9. 【每日算法】C语言8大经典排序算法(2)

    接上文--->[每日算法]C语言8大经典排序算法(1) 二.插入类排序 插入排序(Insertion Sort)的基本思想是:每次将一个待排序的记录,按其关键字大小插入到前面已经排好序的子文件中 ...

最新文章

  1. CentOS7 安装和配置 mysql5.7
  2. Winform中对xml文件进行保存时空白节点自动换行问题的解决
  3. markdown编辑模式添加除水印图片方法
  4. 边缘生——保研与考研到底如何抉择!
  5. 231. 2的幂 golang
  6. 前端学习(924):client系列
  7. Nginx + Tomcat Windows下的负载均衡配置
  8. 易中天讲的很有哲理的十句话【转】
  9. 50 招教你防止黑客入侵,适用于入门小白到专业人员
  10. 两种分布式锁实现方案(一)
  11. 中国云计算进入全球通时代 阿里云四大海外数据中心相继开服
  12. Python分析身份证所在地(省、市、区),生日,生肖,星座,代码,性别,校验码。
  13. linux流程图乱码,Activiti流程图乱码
  14. windows系统不安装软件查看cpu温度
  15. 评价指标MSE和AUC的参考文献
  16. 「猪齿鱼」助力汉得信息智能制造集中交付高效协同
  17. 云知声发布多模态AI芯片战略,同步曝光三款在研芯片...
  18. 来自华为创始人演讲的几点感悟,助你新的一年升职加薪
  19. zxing 生成二维码,可设置logo、二维码颜色、白边大小
  20. Python 中paramiko模块应用

热门文章

  1. 容器编排技术 -- 使用kubectl实现应用伸缩
  2. 分布式事物框架Easy-Transaction--使用入门介绍
  3. BGP——AS—PATH正则表达式(实列讲解+配置)
  4. JavaScript之BOM基础
  5. PHP trim()函数详解
  6. C语言 字符串大小写转换
  7. 【Java】实现矩阵的转置
  8. C#LeetCode刷题之#62-不同路径(Unique Paths)
  9. C#LeetCode刷题之#884-两句话中的不常见单词(Uncommon Words from Two Sentences)
  10. 灯塔谈话记录错误_如何保留灯塔报告的历史记录