代码实现:

/********************************************************************************* @file    bsp_kalman.h* @author  Zxp* @version V1.0.0* @date    2021-06-08* @brief   卡尔曼滤波算法头文件******************************************************************************
*/#ifndef __BSP_KALMAN_H_
#define __BSP_KALMAN_H_#ifdef __cplusplus
extern "C"
{#endif#include "stddef.h"
#include "stdint.h"typedef struct tagKalmanParam{float covQ;  ///< 过程噪声协方差,Q增大,动态响应变快,收敛稳定性变坏float covR;  ///< 观测噪声协方差,R增大,动态响应变慢,收敛稳定性变好float x_last;  //上一时刻的最佳估计float p_last;    //上一时刻的最优偏差} KalmanTypeDef;int32_t BSP_InitKalmanParameter(KalmanTypeDef* pKalman, float covR, float covQ);float BSP_CaluKalman(KalmanTypeDef* pKalman, float measure);#ifdef __cplusplus
}
#endif#endif  // #ifndef __BSP_KALMAN_H_
/********************************************************************************* @file    bsp_kalman.c* @author  Zxp* @version V1.0.0* @date    2021-06-08* @brief   此文件实现了卡尔曼滤波算法参考博客:https://www.zhihu.com/question/22422121*******************************************************************************/#include "bsp_kalman.h"/*** @brief   初始化卡尔曼滤波的参数* @param   pKalman: 要设置的卡尔曼参数结构的指针* @param   covR: 观测噪声协方差* @param   covQ: 过程噪声协方差* @return  状态* @retval  0: 设置成功* @retval  -1: 指针为空*/
int32_t BSP_InitKalmanParameter(KalmanTypeDef* pKalman, float covR, float covQ)
{if (pKalman == NULL){return -1;}pKalman->covR = covR;pKalman->covQ = covQ;pKalman->x_last = 0;pKalman->p_last = pKalman->covQ;return 0;
}/*** @brief   计算滤波值* @param   pKalman: 要计算的卡尔曼参数结构的指针* @param   measure: 测量到的原始数据* @return  滤波值,若pKalman为空,则返回0*/
float BSP_CaluKalman(KalmanTypeDef* pKalman, float measure)
{float x_mid, kg, p_mid;float x_now, p_now;if (pKalman == NULL){return 0;}x_mid = pKalman->x_last;//上一时刻的值 //公式1p_mid = pKalman->p_last + pKalman->covQ;  //公式2kg = p_mid / (p_mid + pKalman->covR); //公式3x_now = x_mid + kg * (measure - x_mid);//当前时刻的最优值 //公式4p_now = (1 - kg) * p_mid;  //当前时刻的最优值偏差 公式5pKalman->p_last = p_now;pKalman->x_last = x_now;return x_now;
}

滤波算法excel实现


卡尔曼滤波算法-简易版相关推荐

  1. node.js——麻将算法(六)简易版麻将出牌AI1.0

    普通麻将的出牌AI如果不是要求特别高的话,其实蛮容易实现的,毕竟大多数人打牌都只是看自己的手牌. 所以作为简易版的AI,出牌的策略只要奔着胡牌去就可以了.我们能想到的就是把相邻或相同的牌凑到一起,把单 ...

  2. 智能停车场[简易版]

    智能停车场[简易版] 项目简介 开发环境 功能简介 停车场收费管理 停车场停车位管理 网页端 功能实现 Socket通信 数据库相关知识 本地数据库操作 pymysql数据操作 web开发中的数据库操 ...

  3. JS正则表达式-附身份证号码验证(简易版)

    文章目录 JS正则表达式 匹配与搜索 一.方括号,圆括号 二.修饰符 三.元字符 四.量词 身份证号码验证(简易版) 身份证号码规则: 1.地址码 2.年份码 3.月份码 4.日期码 5.顺序码 6. ...

  4. 简易版 useState 实现

    基础版 useState 简单实现:只是数组 通过数组实现,初始化的时候,创建两个数组:states 与 setters ,设置光标 cursor 为 0 第一次调用 useState 时,创建一个 ...

  5. 互联网公司实习岗位选择与简易版职业发展规划

    文章目录 1.互联网公司的实习岗位 1.1 互联网公司有哪些? 大厂,中厂,小厂的界定是什么? 1.2 实习岗位方向都有哪些? 1.3 在哪里投递简历?哪里找实习信息? 1.4 参考资料 2.入职门槛 ...

  6. 连连看连接算法Javascript版

    继连连看连接算法Python版后,我将该算法移植到了Javascript上,为在浏览器版连连看做准备. 功能及使用方法参照另外一篇:连连看连接算法Python版. 值得一提的是由于Javascript ...

  7. c语言按给定成绩查询,C语言学生成绩管理系统(简易版)

    #include #include #include int readstudents(struct students stu[]); //读取学生信息 int readsexcode(struct ...

  8. Matlab简易版美图秀秀(GUI界面实现)

    该项目为数字图像处理课程的期末大项目,主要内容是用matlab软件实现一些美图秀秀相关功能,比如对图像进行水平垂直翻转,旋转,裁剪,抠图等基础功能:对图像添加浮雕,艺术噪声,灰度胶片,动感模糊,素描, ...

  9. 基于C++的简易版《球球大作战》游戏设计

    全套资料下载地址:https://download.csdn.net/download/sheziqiong/85602628 全套资料下载地址:https://download.csdn.net/d ...

最新文章

  1. NOIP模拟 数球(思维题)
  2. Linux服务端最大并发数是多少?
  3. Java EE---Spring框架创建Account小项目
  4. 实现Android和PC之间的蓝牙通信
  5. 如何用计算机求和,求和计算器
  6. 如何写一个bat批处理自动上传文件到FTP
  7. eclipse要修改的配置
  8. 微软拿 480 亿买 GitHub 就为了拥抱开源?
  9. mysql数据库工程师考证题_100道MySQL常见面试题总结
  10. 手把手教你Android手机与BLE终端通信--连接,发送和接收数据
  11. qemu 运行arm linux,在ubuntu bionic下对基于qemu的arm64进行linux内核5.0.1版本的编译和运行...
  12. lIUNX如何加载U盘,光盘
  13. 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(6)-Unity 2.x依赖注入by运行时注入[附源码]...
  14. 澳洲计算机专业排名2015,计算机专业世界排名
  15. ubuntu16.04安装完后无法上网
  16. 【多多情报通】看完让人焕然大悟的6种拼多多店铺玩法
  17. Immutable 详解及 React 中实践 1
  18. VBA 开发学习--基础语法
  19. 利用机器学习实施网络犯罪 6种有效途径触目惊心
  20. 如何用php压缩html代码并输出

热门文章

  1. mysql 创建分区索引吗_MySQL分区字段列有必要再单独建索引吗?
  2. 64centos安装mysql_CentOS7 64位安装mysql教程,亲测完美
  3. python使用curve_fit拟合任意分布
  4. python selenium加载插件
  5. from gluonts.trainer import Trainer报错
  6. csv导入mysql php实现_PHP实现csv文件导入mysql数据库的方法
  7. var和function谁先优先执行_JS中如何和让异步函数优先执行?
  8. 启动efi_efi启动模式对比bios启动模式有哪些优势【详细介绍】
  9. java-记录一个子串在整串中出现的次数
  10. ⑥NuPlayer播放源码分析之DecoderBase分析