教你在单片机上套公式实现卡尔曼滤波器
逛博客看到的一篇讲解卡尔曼滤波的文章,发现程序十分简洁易懂,而且使用效果不错,是一个学习的典范,在此分享了!
下面附上代码
- #ifndef _KALMAN_H_
- #define _KALMAN_H_
- extern KalmanGain;// 卡尔曼增益
- extern EstimateCovariance;//估计协方差
- extern MeasureCovariance;//测量协方差
- extern EstimateValue;//估计值
- extern void KalmanFilterInit(void);
- extern KalmanFilter( Measure);
- #endif
- #include "config.h"
- #include "math.h"
- KalmanGain;// 卡尔曼增益
- EstimateCovariance;//估计协方差
- MeasureCovariance;//测量协方差
- EstimateValue;//估计值
- void KalmanFilterInit(void);
- extern float KalmanFilter(float Measure);
- void KalmanFilterInit(void)
- {
- EstimateValue=0;
- EstimateCovariance=0.1;
- MeasureCovariance=0.02;
- }
- KalmanFilter( Measure)
- {
- //计算卡尔曼增益
- KalmanGain=EstimateCovariance*sqrt(1/(EstimateCovariance*EstimateCovariance+MeasureCovariance*MeasureCovariance));
- //计算本次滤波估计值
- EstimateValue=EstimateValue+KalmanGain*(Measure-EstimateValue);
- //更新估计协方差
- EstimateCovariance=sqrt(1-KalmanGain)*EstimateCovariance;
- //更新测量方差
- MeasureCovariance=sqrt(1-KalmanGain)*MeasureCovariance;
- //返回估计值
- return EstimateValue;
- }
不错不错,学习了!
好东西,支持一下
支持支持
谢谢小编谢谢小编。。
非常好,大赞。
谢谢分享谢谢分享谢谢分享
谢谢分享谢谢分享 谢谢分享
谢谢分享谢谢分享 谢谢分享
谢谢分享 谢谢分享谢谢分享谢谢分享
谢谢分享 谢谢分享 谢 谢
谢谢分享 谢谢分享 谢 谢
谢谢分享 谢谢分享 分 分
谢谢分享 谢谢分享 享 享
谢谢分享 谢谢分享 谢 谢
谢谢分享 谢谢分享 谢 谢
谢 谢谢分享 谢谢分享 分 分
谢谢 谢谢分享 谢谢分享 享 享
谢谢分 谢谢分享 谢谢分享 谢 谢
谢谢分 谢谢分享 谢 谢
谢谢分谢谢分享 谢 谢
谢谢谢谢 分 分
谢谢 享 享
加到LabVIEW里面试试!
木有看懂,,,有时间慢慢看,,,
谢小编我加到32上试试
小编真牛,大神。膜拜!
终于找到可以用的了。谢谢分享
非常不错非常不错非常不错非常不错非常不错非常不错非常不错非常不错非常不错非常不错
移植好了么?我移植到STM32上采样AD怎么不输出数值呢?
呵呵,很不错,理解了卡尔曼滤波的精髓,编程就很简单了!
谢谢小编分享!
好东西啊一定要顶
好东西,学习了
小编真是好人啊;感谢奉献
这个必须顶,好东西值得收藏。