1、算法介绍均值滤波算法是一种比较常用、比较简单的滤波算法。 滤波将n个周期的采样值计算为平均值。 算法非常简单。 在n值大的情况下,滤波后的信号比较平滑,但灵敏度差; 相反,在n的值小的情况下,滤波器的平滑化效果低,但是灵敏度好。
优点:算法简单,对周期性干扰有良好的抑制作用,平滑度高,适用于高频振动的系统。
缺点:对异常信号的抑制作用差,不能消除脉冲噪声的影响。
2 .实现代码下的代码是均值滤波的示例代码。
浮动数据[ 10 ]; floataveragefilter (float in _ data ) {float sum=0; for(intI=0; i9; I ) {data[i]=data[i 1]; sum=sum data[i]; }data[9]=in_data; sum=sum data[9]; 返回(Sum/10 ); }在代码中,data[]是全局变量,记录10个循环的采样值。 averageFilter (是筛选函数,其输入是新收集的数据。 函数首先移位数据(data ) ),将新收集的数据存储在数据(data ) )中,同时计算数据(data ) )
3、以下举例说明了均值滤波的效果。 滤波对象为车速信号,滤波效果如下图所示。 图中,横轴为时间、单位:秒,纵轴为速度、单位km/h。 这里,蓝色是滤波前的数据,红色是滤波后的数据。 可以看出,平均值滤波对数据进行了较大的平滑,但数据存在延迟。