单片机高斯滤波器 c语言,单片机ADC采样算法之卡尔曼滤波

本文介绍了在单片机中使用卡尔曼滤波算法进行ADC采样数据滤波的方法。通过C语言实现卡尔曼滤波器,并展示了不同Q和R参数对滤波效果的影响。实验结果显示,Q值影响动态响应,R值影响收敛稳定性,参数调整能优化滤波结果。
摘要由CSDN通过智能技术生成

单片机ADC采样算法 之 卡尔曼滤波

算法的核心思想是,根据当前的仪器"测量值" 和上一刻的 “预测量” 和 “误差”,计算得到当前的最优量.

再预测下一刻的量, 里面比较突出的是观点是. 把误差纳入计算, 而且分为预测误差和测量误差两种.通称为 噪声. 还有一个非常大的特点是,误差独立存在, 始终不受测量数据的影响。

下来先了解一个卡尔曼滤波中几个参数的含义:概率(Probability),随即变量(Random Variable),高斯或正态分配(Gaussian Distribution)还有State-space Model等等。

关于卡尔曼公式的含义及推导,网上已经有很多文章了,这里不在赘述,直接看C代码的实现。

/*

R值固定,Q值越大,代表越信任测量值,Q值无穷大,代表只用测量值。

Q值越小,代表越信任模型预测值,Q值为0,代表只用模型预测值。

*/

//参数一

float KalmanFilter( float inData )

{

static float prevData = 0; //上一个数据

static float p = 10, q = 0.001, r = 0.001, kGain = 0; // q 控制误差 r 控制响应速度

p = p + q;

kGain = p / ( p + r ); //计算卡尔曼增益

inData = prevData + ( kGain * ( inData - prevData ) ); //计算本次滤波估计值

p = ( 1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值