微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 教你在单片机上套公式实现卡尔曼滤波器

教你在单片机上套公式实现卡尔曼滤波器

时间:10-02 整理:3721RD 点击:

逛博客看到的一篇讲解卡尔曼滤波的文章,发现程序十分简洁易懂,而且使用效果不错,是一个学习的典范,在此分享了!
















下面附上代码

  1. #ifndef _KALMAN_H_
  2. #define _KALMAN_H_

  3. extern  KalmanGain;//  卡尔曼增益
  4. extern  EstimateCovariance;//估计协方差
  5. extern  MeasureCovariance;//测量协方差
  6. extern  EstimateValue;//估计值
  7. extern void KalmanFilterInit(void);
  8. extern      KalmanFilter(   Measure);
  9. #endif



  10. #include "config.h"
  11. #include "math.h"

  12.   KalmanGain;//  卡尔曼增益
  13.   EstimateCovariance;//估计协方差
  14.   MeasureCovariance;//测量协方差
  15.   EstimateValue;//估计值

  16. void KalmanFilterInit(void);

  17. extern    float  KalmanFilter(float   Measure);


  18. void KalmanFilterInit(void)
  19. {
  20. EstimateValue=0;

  21. EstimateCovariance=0.1;
  22. MeasureCovariance=0.02;


  23. }

  24. KalmanFilter(   Measure)
  25. {

  26. //计算卡尔曼增益
  27. KalmanGain=EstimateCovariance*sqrt(1/(EstimateCovariance*EstimateCovariance+MeasureCovariance*MeasureCovariance));

  28. //计算本次滤波估计值
  29. EstimateValue=EstimateValue+KalmanGain*(Measure-EstimateValue);
  30. //更新估计协方差

  31. EstimateCovariance=sqrt(1-KalmanGain)*EstimateCovariance;
  32. //更新测量方差
  33. MeasureCovariance=sqrt(1-KalmanGain)*MeasureCovariance;
  34. //返回估计值
  35. return EstimateValue;
  36. }

复制代码

转自:http://blog.163.com/tianjunqiang666@126/blog/static/87259119201131314343274/

不错不错,学习了!

好东西,支持一下

支持支持

谢谢小编谢谢小编。。

非常好,大赞。

                                         谢谢分享谢谢分享谢谢分享
      谢谢分享谢谢分享                       谢谢分享
      谢谢分享谢谢分享                谢谢分享         
            谢谢分享              谢谢分享谢谢分享谢谢分享
            谢谢分享              谢谢分享        谢                谢
            谢谢分享              谢谢分享        谢                谢
            谢谢分享              谢谢分享        分                分
            谢谢分享              谢谢分享        享                享
            谢谢分享              谢谢分享        谢                谢
            谢谢分享              谢谢分享        谢                谢
谢        谢谢分享               谢谢分享       分                分
谢谢     谢谢分享              谢谢分享        享                享
谢谢分 谢谢分享              谢谢分享        谢                谢
谢谢分 谢谢分享                               谢       谢
谢谢分谢谢分享                         谢                 谢
        谢谢谢谢                    分                               分
            谢谢                   享                                      享

加到LabVIEW里面试试!

木有看懂,,,有时间慢慢看,,,

谢小编我加到32上试试

小编真牛,大神。膜拜!

终于找到可以用的了。谢谢分享

非常不错非常不错非常不错非常不错非常不错非常不错非常不错非常不错非常不错非常不错

移植好了么?我移植到STM32上采样AD怎么不输出数值呢?

呵呵,很不错,理解了卡尔曼滤波的精髓,编程就很简单了!

谢谢小编分享!

好东西啊一定要顶

好东西,学习了

小编真是好人啊;感谢奉献

这个必须顶,好东西值得收藏。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top