目录

  • 代码
    • kalman.c
    • kalman.h
  • 滤波效果

很久以前抄的,忘了是从哪弄的了
我把它改成了这种结构体指针传参的形式,方便在比赛中应用。应用举例见MSP432 PID 电机调角度、调速。
它曾助力笔者获2020年电赛省一等奖。

代码

Q:过程噪声协方差 Q参数调滤波后的曲线平滑程度,Q越小越平滑;
R:观测噪声协方差 R参数调整滤波后的曲线与实测曲线的相近程度,R越小越接近(收敛越快)

kalman.c

/*
卡尔曼滤波器
整理By 乙酸氧铍
*/
#include "kalman.h"double KalmanFilter(Kalman_Typedef *klm, double input)
{//预测协方差方程:k时刻系统估算协方差 = k-1时刻的系统协方差 + 过程噪声协方差klm->Now_P = klm->LastP + klm->Q;//卡尔曼增益方程:卡尔曼增益 = k时刻系统估算协方差 / (k时刻系统估算协方差 + 观测噪声协方差)klm->Kg = klm->Now_P / (klm->Now_P + klm->R);//更新最优值方程:k时刻状态变量的最优值 = 状态变量的预测值 + 卡尔曼增益 * (测量值 - 状态变量的预测值)klm->out = klm->out + klm->Kg * (input -klm->out);//因为这一次的预测值就是上一次的输出值//更新协方差方程: 本次的系统协方差赋给 klm->LastP 为下一次运算准备。klm->LastP = (1-klm->Kg) * klm->Now_P;return (klm->out);
}void Kalman_Init(Kalman_Typedef *klm, const double klm_Q, const double klm_R)//温度klm_Q=0.01 klm_R=0.25
{klm->LastP=0.02;       //上次估算协方差klm->Now_P=0;          //当前估算协方差klm->out=0;                //卡尔曼滤波器输出klm->Kg=0;                //卡尔曼增益klm->Q=klm_Q;            //Q:过程噪声协方差 Q参数调滤波后的曲线平滑程度,Q越小越平滑;klm->R=klm_R;          //R:观测噪声协方差 R参数调整滤波后的曲线与实测曲线的相近程度,R越小越接近(收敛越快)
}

kalman.h

#ifndef __KALMAN_H__
#define __KALMAN_H__typedef struct
{/*不用动*/double LastP;//上次估算协方差double Now_P;//当前估算协方差double out;//卡尔曼滤波器输出double Kg;//卡尔曼增益double Q;double R;
}Kalman_Typedef;void Kalman_Init(Kalman_Typedef *klm, const double klm_Q, const double klm_R);
double KalmanFilter(Kalman_Typedef *klm, double input);#endif

滤波效果


【电赛】一阶卡尔曼滤波器 滤波效果良好相关推荐

  1. 【滤波】设计卡尔曼滤波器

    %matplotlib inline #format the book import book_format book_format.set_style() 简介 在上一章节中,我们讨论了教科书式的问 ...

  2. 【理解】Kalman卡尔曼滤波器 附pythonmatlab代码

    一般我是把参考链接放在最后的,但这一次,我放最前排,以表示我对这两位博主的极大感谢,写得真的是太好了! 可能我即将写的这篇是最详细明白的一篇关于卡尔曼滤波器的理解,如果还有疑问,我会补充修正 文章目录 ...

  3. 【滤波】多元卡尔曼滤波器

    %matplotlib inline #format the book import book_format book_format.set_style() 简介 我们现在准备研究和实现完整的.多元形 ...

  4. 滤波融合(二)基于C++完成一个简单的 扩展卡尔曼滤波器的非线性系统模型

    之前已经简单的实现过线性卡尔曼滤波:滤波融合(一)基于C++完成一个简单的 卡尔曼滤波器 线性的系统和测量模型 那么对于非线性的系统,区别就是多了线性化的过程,因为高斯映射到非线性函数,其结果不再是一 ...

  5. 【滤波】扩展卡尔曼滤波器(EKF)

    %matplotlib inline #format the book import book_format book_format.set_style() 我们发展了线性卡尔曼滤波器的理论.然后在上 ...

  6. 卡尔曼滤波滤波方程_了解卡尔曼滤波器及其方程

    卡尔曼滤波滤波方程 Before getting into what a Kalman filter is or what it does, let's first do an exercise. O ...

  7. android 陀螺仪滤波_android – 卡尔曼滤波器 – 指南针和陀螺仪

    我正在尝试用陀螺仪,加速度计和万用表构建罗盘. 我正在将acc值与测量值融合以获得方向(使用旋转矩阵)并且它工作得非常好. 但现在我想添加陀螺仪,以便在磁传感器不准确时进行补偿.因此,我想使用卡尔曼滤 ...

  8. android程序如何滤波,android – 卡尔曼滤波器:如何使用它没有“状态转换模型”?...

    我正在从Android手机上研究加速度计.我希望过滤加速度计正在返回的可怕噪音,记录手机的动作. 我正在读卡尔曼滤波器,因为低通是不够的. 但我没有从ACCELERATION(k-1)到ACCELER ...

  9. 我和电赛的成长故事与总结#2019年全国大学生电子设计竞赛#

    依稀记得知晓<全国大学生电子设计竞赛>的名字是在大一新生营参观电控科协的时候.近两年的时光,从手持烙铁练焊接至今手持烙铁调电路,从C语言里转了个圈回到了零点,从单片机里转了半圈又回到零点, ...

最新文章

  1. CVPR2019 日程安排
  2. java加密解密与数字证书的操作
  3. 【noi 2.5_8465】马走日(dfs)
  4. ETSI GS MEC 011,Edge Platform Application Enablement API
  5. 新一代垃圾回收器ZGC的探索与实践
  6. 信息安全工程师考试大纲-科目2:信息安全应用技术
  7. java 常用 函数_java在线报表中有哪些常用函数
  8. 科技爱好者周刊(第 199 期):俄罗斯的 HTTPS 证书问题
  9. Excel学习日记:L9-图表制作-柱状图
  10. Mysql创建锁芯_A级锁规格释疑
  11. ajax data=text,jQuery ajax dataType值为text json探索分享
  12. java实现输入信用卡号码
  13. 深入理解机器学习中的:目标函数,损失函数和代价函数
  14. 使用live-server踩过的坑
  15. MinGW 环境变量的配置
  16. 【生活】外包到阿里工作是一种什么样到体验
  17. 同事逆袭面进阿里P7 年薪60W+,临别留下一张Android开发重点技术路线图
  18. 浅谈安科瑞电能预付费系统在大电力客户中的设计及应用分析
  19. Python基础–详细记录Sixth_Chapter
  20. 下一代广播电视音频解决方案:MPEG-H

热门文章

  1. 一个显示日期的工具类
  2. [转帖]鲍鹏山:我们培养了很多高学历的野蛮人
  3. find_cmd函数分析
  4. android 带图片的文本框
  5. C语言中return和exit的区别
  6. 两个重要而又容易被忽视的角色
  7. 同一页面引入多个JS文件的编码问题
  8. 阎焱多少身价_2020年,数据科学家的身价是多少?
  9. 水文分析提取河网_基于图的河网段地理信息分析排序算法
  10. 数据分析中的统计概率_了解统计和概率:成为专家数据科学家