kalmen_filte.h

#ifndef  _KALMAN_FILTER_H
#define  _KALMAN_FILTER_H//1d卡尔曼滤波
typedef struct {float x;  // state float A;  // x(n)=A*x(n-1)+u(n),u(n)~N(0,q) float H;  // z(n)=H*x(n)+w(n),w(n)~N(0,r)   float q;  // process(predict) noise convariance 协方差float r;  // measure noise convariance float p;  // estimated error convariance 估计误差协方差float gain;
}kalman_struct;void kalman_init(kalman_struct *kalman_lcw, float init_x, float init_p);
float kalman_filter(kalman_struct *kalman_lcw, float z_measure);#endif  /*_KALMAN_FILTER_H*/

kalman_filte.c

#include "kalman_filter.h"/***kalman_init - 卡尔曼滤波器初始化*@kalman_lcw:卡尔曼滤波器结构体*@init_x:待测量的初始值*@init_p:后验状态估计值误差的方差的初始值*/
void kalman_init(kalman_struct *kalman_lcw, float init_x, float init_p)
{kalman_lcw->x = init_x;//待测量的初始值,如有中值一般设成中值(如陀螺仪)kalman_lcw->p = init_p;//后验状态估计值误差的方差的初始值kalman_lcw->A = 1;kalman_lcw->H = 1;kalman_lcw->q = 10e-2;//10e-6;//2e2;predict noise convariance 预测(过程)噪声方差 实验发现修改这个值会影响收敛速率kalman_lcw->r = 5e2;//10e-5;//测量(观测)噪声方差。以陀螺仪为例,测试方法是://保持陀螺仪不动,统计一段时间内的陀螺仪输出数据。数据会近似正态分布,//按3σ原则,取正态分布的(3σ)^2作为r的初始化值
}/***kalman_filter - 卡尔曼滤波器*@kalman_lcw:卡尔曼结构体*@measure;测量值*返回滤波后的值*/
float kalman_filter(kalman_struct *kalman_lcw, float measure)
{/* Predict */kalman_lcw->x = kalman_lcw->A * kalman_lcw->x;kalman_lcw->p = kalman_lcw->A * kalman_lcw->A * kalman_lcw->p + kalman_lcw->q;  /* p(n|n-1)=A^2*p(n-1|n-1)+q *//* Measurement */kalman_lcw->gain = kalman_lcw->p * kalman_lcw->H / (kalman_lcw->p * kalman_lcw->H * kalman_lcw->H + kalman_lcw->r);kalman_lcw->x = kalman_lcw->x + kalman_lcw->gain * (measure - kalman_lcw->H * kalman_lcw->x);kalman_lcw->p = (1 - kalman_lcw->gain * kalman_lcw->H) * kalman_lcw->p;return kalman_lcw->x;
}

卡尔曼滤波 C语言实现相关推荐

  1. 【飞控理论】从零开始学习Kalman Filters之四:卡尔曼滤波C语言代码实现

    文章目录 前言 学习目录 1.卡尔曼线性滤波的五条黄金公式 2.陀螺仪的原始数据 3.C语言源码分析 附录 1.矩阵乘法 2.协方差矩阵 3.单位矩阵 前言   前面的文章系统介绍了卡尔曼滤波算法的数 ...

  2. 卡尔曼滤波C语言实现(矩阵版)

    卡尔曼滤波算法及其C语言实现(矩阵操作版本) 卡尔曼滤波算法 随机数的产生 均匀分布随机数的产生 正态分布的随机数 矩阵的C语言实现 卡尔曼滤波测试 卡尔曼滤波算法 这里就不详细讲解该算法,我觉得比较 ...

  3. 卡尔曼滤波--C语言实现

    以下是一段用C语言实现的卡尔曼滤波算法,供有需要的小伙伴参考 #include "stdio.h" #include "stdlib.h" #include & ...

  4. 卡尔曼滤波 c语言 模板

    卡尔曼滤波算法 C语言 代码编写 如下所示 #include <math.h> #include <stdio.h>/*R值固定,Q值越大,代表越信任测量值,Q值无穷大,代表只 ...

  5. 卡尔曼滤波C语言实现

    卡尔曼5条基本公式,参考https://wenku.baidu.com/view/8523cb6eaf1ffc4ffe47ac24.html #include "stdio.h" ...

  6. 【飞控理论】从零开始学习Kalman Filters之三:非线性状态估算器

    文章目录 前言 学习目录 1.开始之前先需要知道的几个概念 2.非线性状态估算器 2.1.扩展卡尔曼滤波器(EKF) 2.2.无味卡尔曼滤波器(UKF) 2.3.粒子滤波器(PF) 2.4.总表    ...

  7. 【飞控理论】从零开始学习Kalman Filters之二:最优状态估计、最优估计算法和方程

    文章目录 前言 学习目录 1.开始之前先需要知道的几个概念 2.最优状态估计 3.最优估计算法和方程   本文是博主学习笔记,点击这里观看原视频. 前言   在上次的学习中我们学习了卡尔曼滤波器的常见 ...

  8. 【飞控理论】从零开始学习Kalman Filters之一:Kalman Filters的常见用途、什么是状态观测器?

    文章目录 前言 学习目录 1.Kalman Filters的常见用途 1.1.数据源无法直接被测量时卡尔曼滤波器是如何进行估算系统的状态 1.2.数据源在噪音影响下如何使用卡尔曼滤波器来估计系统的状态 ...

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

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

最新文章

  1. jad 反编译java
  2. 漫谈 Weblogic CVE-2020-2555
  3. OMG: daily scrum six
  4. wxWidgets:wxSystemOptions类用法
  5. devops 技术_在DevOps时代雇用技术作家
  6. 《迷宫》之站立会议—5.16
  7. 中介者模式android,Android[高级教程] 设计模式之六 中介者模式(二)
  8. bash脚本比较运算符和if else和test命令
  9. 视频教程-纯风老师AI平面设计视频教程-其他
  10. 麦子学院bootstrap实战项目官网,后台,jquery.singlePageNav.min.js ,wow.min.js,animate.css使用...
  11. 硬件测试需要什么软件是什么原因,什么硬件软件检测温度准啊
  12. 常用零部件表面粗糙度标注及表面处理技术
  13. android怎么配置雷电模拟器,雷电模拟器设置_雷电安卓模拟器怎么设置分辨率
  14. python 降低图片分辨率的两种方法
  15. 【go-zero】go-zero开发环境 如何聚合所有api? caddy反向代理服务分发 微服务设计api聚合方法 best practice
  16. Vue微信网页开发,输入法顶开一部分屏幕的解决办法
  17. iOS 图片滚动播放
  18. 作业调度算法【平均周转时间、平均带权周转时间、先来先服务FCFS、短作业优先SJF、高优先权(级)算法FPF、高响应比优先算法HRRN】
  19. Debian安装metasploit
  20. java 正则 提取数字_java使用正则提取字符串中的数字(例如提取短信中的验证码)详解...

热门文章

  1. c语言圆的半径为5,运用c语言求解:已知圆的半径为5,求圆,圆的内接正方形,圆的外接正方形的面积和周长。感谢大神。...
  2. 升压BOOST电路和降压BUCK电路最容易的理解
  3. 【微信小程序】API之网络(一)发起请求
  4. N进制到M进制-C语言
  5. Excel - 筛选显示各项数量
  6. 互联网DSP广告系统架构及关键技术解析
  7. FreeRADIUS整合微软活动目录做身份验证时报错“winbind client not authorized to use winbindd_pam_auth_crap”的解决方法
  8. 大数据运维 (四) 大数据平台运维总结
  9. Hilbert变换求信号的包络线及MATLAB代码
  10. 系统架构设计师考试题库笔记重点6:信息化基础