卡尔曼滤波算法及C语言实现(转载)
kalman filter最为核心的内容是体现它最优化估计和递归特点的5条公式。
下面利用C语言编程实现Kalman Filter Algorithm,代码如下:
- #include "stdio.h"
- #include "stdlib.h"
- #include "math.h"
- double frand()
- {
- return 2 * ((rand() / (double)RAND_MAX) - 0.5);//随机噪声
- }
- void main()
- {
- float x_last = 0;
- float p_last = 0.02;
- float Q = 0.018;
- float R = 0.542;
- float kg;
- float x_mid;
- float x_now;
- float p_mid;
- float p_now;
- float z_real = 0.56;
- float z_measure;
- float summerror_kalman = 0;
- float summerror_measure = 0;
- int i;
- x_last = z_real + frand()*0.03;
- x_mid = x_last;
- for (i = 0; i < 20;i++)
- {
- x_mid = x_last;
- p_mid = p_last + Q;
- kg = p_mid / (p_mid + R);
- z_measure = z_real + frand()*0.03;//测量值
- x_now = x_mid + kg*(z_measure - x_mid);//估计出的最有值
- p_now = (1 - kg)*p_mid;//最优值对应的协方差
- printf("Real position:%6.3f\n", z_real);
- printf("Measure position:%6.3f [diff:%.3f]\n", z_measure, fabs(z_real - z_measure));
- printf("Kalman position: %6.3f [diff:%.3f]\n", x_now, fabs(z_real - x_now));
- printf("\n\n");
- summerror_kalman += fabs(z_real - x_now);
- summerror_measure += fabs(z_real - z_measure);
- p_last = p_now;
- x_last = x_now;
- }
- printf("总体测量误差 :%f\n", summerror_measure);
- printf("总体卡尔曼滤波误差:%f\n", summerror_kalman);
- printf("卡尔曼误差所占比例:%d%%\n", 100 - (int)((summerror_kalman / summerror_measure) * 100));
- getchar();
- }
运行结果:
转载自:https://blog.csdn.net/sinat_20265495/article/details/51006311
卡尔曼滤波算法及C语言实现(转载)相关推荐
- 卡尔曼滤波算法及c语言代码,卡尔曼滤波算法及C语言代码
卡尔曼滤波算法及C语言代码 卡尔曼滤波简介及其算法实现代码 卡尔曼滤波算法实现代码(C,C++分别实现) 卡尔曼滤波器简介 近来发现有些问题很多人都很感兴趣.所以在这里希望能尽自己能力跟大家讨论一些力 ...
- 卡尔曼滤波算法c语言stm32,卡尔曼滤波算法及C语言实现_源代码
a往南向北 2019-01-16 20:39:20 11340 收藏 111 分类专栏: C语言嵌入式 文章标签: 卡尔曼滤波 C代码 卡尔曼滤波理论很容易就可以在MATLAB软件环境下实现,但是 ...
- 卡尔曼滤波算法及C语言实现_源代码
卡尔曼滤波理论很容易就可以在MATLAB软件环境下实现,但是,实际的硬件板子上还是需要C语言,当然可以自动代码生成,还有一种就是直接手动编写C语言. 1.前言 在google上搜索卡尔曼滤波,很容易找 ...
- C语言 | 基于51单片机实现MPU6050的卡尔曼滤波算法(代码类2)
github:https://github.com/MichaelBeechan CSDN:https://blog.csdn.net/u011344545 之前写过一个博客(代码分享:单片机开发 | ...
- C语言 | 卡尔曼滤波算法2——算法分析
github:https://github.com/MichaelBeechan CSDN:https://blog.csdn.net/u011344545 ===================== ...
- 迪杰斯特拉算法(C语言实现)
迪杰斯特拉算法(C语言实现) 如上图,求以a为源点到个顶点的最短路劲. #include "stdio.h" #include "stdlib.h" //用一个 ...
- 【转】卡尔曼滤波算法详细推导(相当值得一看)
转载自 卡尔曼滤波算法详细推导 这一篇对预备知识的介绍还是很好的,过程与原理讲解也很到位,应该是目前看到中文里最好的讲解了. 一.预备知识 1.协方差矩阵 是一个维列向量,是的期望 ...
- matlab温度数据怎么滤波_卡尔曼滤波算法思想理解 Kalman filter 第一篇
卡尔曼滤波算法思想理解 Kalman filter 第一篇 最近在初步的理解目标跟踪的领域, 其中一个非常经典的算法卡尔曼滤波Kalman filter是需要有很好的理解才行, 由于已经脱离了学校,懂 ...
- 【每日算法】C语言8大经典排序算法(2)
接上文--->[每日算法]C语言8大经典排序算法(1) 二.插入类排序 插入排序(Insertion Sort)的基本思想是:每次将一个待排序的记录,按其关键字大小插入到前面已经排好序的子文件中 ...
最新文章
- CentOS7 安装和配置 mysql5.7
- Winform中对xml文件进行保存时空白节点自动换行问题的解决
- markdown编辑模式添加除水印图片方法
- 边缘生——保研与考研到底如何抉择!
- 231. 2的幂 golang
- 前端学习(924):client系列
- Nginx + Tomcat Windows下的负载均衡配置
- 易中天讲的很有哲理的十句话【转】
- 50 招教你防止黑客入侵,适用于入门小白到专业人员
- 两种分布式锁实现方案(一)
- 中国云计算进入全球通时代 阿里云四大海外数据中心相继开服
- Python分析身份证所在地(省、市、区),生日,生肖,星座,代码,性别,校验码。
- linux流程图乱码,Activiti流程图乱码
- windows系统不安装软件查看cpu温度
- 评价指标MSE和AUC的参考文献
- 「猪齿鱼」助力汉得信息智能制造集中交付高效协同
- 云知声发布多模态AI芯片战略,同步曝光三款在研芯片...
- 来自华为创始人演讲的几点感悟,助你新的一年升职加薪
- zxing 生成二维码,可设置logo、二维码颜色、白边大小
- Python 中paramiko模块应用
热门文章
- 容器编排技术 -- 使用kubectl实现应用伸缩
- 分布式事物框架Easy-Transaction--使用入门介绍
- BGP——AS—PATH正则表达式(实列讲解+配置)
- JavaScript之BOM基础
- PHP trim()函数详解
- C语言 字符串大小写转换
- 【Java】实现矩阵的转置
- C#LeetCode刷题之#62-不同路径(Unique Paths)
- C#LeetCode刷题之#884-两句话中的不常见单词(Uncommon Words from Two Sentences)
- 灯塔谈话记录错误_如何保留灯塔报告的历史记录