一、概述
一阶低通滤波算法是一种比较常用的滤波算法,又称一阶惯性滤波,或一阶低通滤波。算法公式如下:
Y(n)=k*X(n)+ (1-k)Y(n-1); ( Y(n)为本次输出,k为滤波系数,Y(n-1)为上次输出)
从公式即可看出结果是对本次输出和上次输出进行加权后输出。
网上对该滤波算法的优缺点总结的优缺点如下:
优点:
-采用数字滤波算法来实现动态的RC滤波,则能很好的克服模拟滤波器的缺点;
-在模拟常数要求较大的场合这种算法显得更为实用;
-其对于周期干扰有良好的抑制作用;
-比较节省RAM空间;
缺点
-不足之处是带来了相位滞后,导致灵敏度低;
-同时它不能滤除频率高于采样频率的二分之一(称为奈奎斯特频率)的干扰(例如采样频率为100Hz,则它不能滤除50Hz以上的干扰信号)对于高于奈奎斯特频率的干扰信号,应该采用模拟滤波器;
-对没有乘、除法运算指令的单片机来说,程序运算工作量较大;
关于滤波系数k的总结如下:
1、滤波系数越小,滤波结果越平稳,但是灵敏度越低;
2、滤波系数越大,灵敏度越高,但是滤波结果越不稳定;
3、当数据快速变化时,滤波结果能及时跟进(灵敏度优先);
4、当数据趋于稳定,在一个固定的点上下振荡时,滤波结果能趋于平稳(平稳度优先);
二、模型的搭建
模型的搭建如下图。
引入一个带噪声的正弦波,k=0.5时的滤波效果如图。通过不断调整k系数即可得到较好的滤波效果了。
在模型定点化的时候,经常需要根据上下限以及精度进行取舍,此时还需要注意滤波后的结果与实际结果的误差是否满足需求。
如,本次输入信号为15,上次输入信号为14,滤波系数为0.85,按照公式本次输出信号=15*0.85+14*(1-0.85)=14.85。若此时取整则实际输出为15。