本文主要是介绍【控制算法 数据处理】一阶滤波算法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
简单介绍:
一阶滤波算法是比较常用的滤波算法,它的滤波结果=a*本次采样值+(1-a)*上次滤波结果,其中,a为0~1之间的数。一阶滤波相当于是将新的采样值与上次的滤波结果计算一个加权平均值。a的取值决定了算法的灵敏度,a越大,新采集的值占的权重越大,算法越灵敏,但平顺性差;相反,a越小,新采集的值占的权重越小,灵敏度差,但平顺性好。优点是对周期干扰有良好的抑制作用,适用于波动频率比较高的场合,它不用记录历史数据。
缺点是:滞后、灵敏度低。
python 实现
# -*- coding: utf-8 -*-def FirstOrderLag(inputs,a):# 上一次滤波结果tmpnum = inputs[0]for index,tmp in enumerate(inputs):inputs[index] = (1-a)*tmp + a*tmpnumtmpnum = tmpreturn inputsif __name__ == '__main__':inputs=[1938.9836,1922.3427,1893.2213,1829.154,1146.2628,1176.696,1212.191,1254.0005,1299.5145,1347.3482,1399.8107,1457.1985,1518.2097,1590.6988]a=0.0001result=FirstOrderLag(inputs,a)for each in result:print(each)
这篇关于【控制算法 数据处理】一阶滤波算法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!