Y(n)-本次滤波输出值;
Y(n-1)-上次滤波输出值;
a-滤波系数。
其中,滤波系数a越小,滤波结果越平滑,但反应灵敏度越低;滤波系数a越大,则反应灵敏度越高,但滤波结果平滑性越差,越不稳定。所以,在选取滤波系数时,应对平滑性和灵敏度进行考虑然后取舍。
同时,应注意小数舍弃带来的误差。比如:本次采样值=25,上次滤波结果=24,滤波系数=10,根据滤波算法:
本次滤波结果=(25*10+24*(256-10))/256=24.0390625
但是,大家在单片机运算中,很少采用浮点数。因此运算后的小数部分要么舍弃,要么进行四舍五入运算。这样一来,本例中的结果24.0390625就变成了24。假如每次采样值都=25,那么滤波结果永远=24。也就是说滤波结果和实际数据一直存在无法消除的误差。