前言
这里给大家讲讲一阶滤波的原理及其代码生成,在一些算法模型中通常会用到滤波模型对一些敏感数据进行滤波,比如扭矩之类的数据,确保车辆在行驶过程中不会出现抖动现象
一阶滤波器公式
一阶滤波算法是个很简单也很常用的滤波算法,其算法公式如下:
Y(n) = A*X(n) + (1−A)*Y(Z)
式中:A为滤波系数,X(n)为本次采样值,Y(Z)为上次滤波输出值,Y(n)为本次滤波输出值。
原理:采用两次输出结果的相应系数相加,每一次的结果会偏向于上一次结果的值
其中A为滤波深度,A的最大值不能超过1,A的值越大,本次输出结果所占比例越大,滤波效果越小,反过来A的值越小,代表本次输出结构占比越小,滤波效果越大,但是会对最终结果影响较大,所以在比例系数方面,适用情况决定A的大小
建模部分
下图是一阶滤波的的模型,其中输入1是输入参数,输入2是滤波深度,输出1是最终滤波后的值
代码部分
下图是代码部分,生成后还是符合我们最初的公式的
实际效果
首先我们试下滤波深度为0.3时候的效果:
黄色线条为滤波后的值,蓝色线条为原始发生的值
接下来我们看下滤波深度为0.7时候的效果:
下面我们对比两者的滤波区别:
可以看的出0.7的滤波深度还是比较贴近真实值的,0.3的滤波深度虽然比较平稳,但是距离真实值差距还是很大的。
总结:
一阶滤波可以实现对数据的抖动进行滤波,但是滤波深度需要一句情况进行设置,个人建议非必要情况下,不建议滤波深度小于0.7,滤波深度过大会影响真实值的数据运行。