目录

1、算法介绍

2、代码实现

3、示例


1、算法介绍

        公式:

                 滤波结果 = a*当次采样值 +(1-a)*前次滤波结果

a 为0~1之间的数,一阶滤波相当于是将新的采样值与上次的滤波结果计算一个加权平均值,a 的取值决定了算法的灵敏度,

        a越大,新采集的值占的权重越大,算法越灵敏,但平顺性差;

        a越小,新采集的值占的权重越小,灵敏度差,但平顺性好。

优点:对周期干扰有良好的抑制作用,适用于波动频率比较高的场合,它不用记录历史数据

缺点:滞后、灵敏度低,比如骤降的速度,

2、代码实现

        下面的代码是轮速一阶滤波的示例代码。

void IIR_Filter(float32 *inputData,float32 *outputData){
	float32 Para_A = 0.1f;
    *inputData 	= *inputData*Para_A + *outputData*(1.0-Para_A);
	*outputData = *inputData;
}

3、示例

        下面的demo为一阶滤波的作用,滤波对象为轮速,滤波效果如下图所示。图中,横轴为时间,单位:秒,纵轴为转速,单位r/s。其中,蓝色为滤波前,黄色为滤波后。从图中可以看出,滤波算法使原始信号变得平滑,但是带来了滞后。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐