0.简介

作为常用的滤波器形式,低通滤波是一种适中的滤波处理方式,相较于卡尔曼滤波算法和滑动平均滤波而言。其计算量适中,同时能拿到一个较为合适的结果。低通滤波算法可以解决这种长期可靠,短期噪声大的传感器,并有效地实现噪声的滤除。

一阶低通滤波解决传感器噪声问题_算法

1. 相关代码

oldData表示上一次的输出Y(n-1), newData表示新的输入X(n); deltaT 采样周期, Fcut 截止频率 。

float LopPassFilter_RC_1st(float oldData, float newData, float a)
  {
    return oldData * (1 - a) + newData * a;
  }

  //计算比例系数a:

  float LopPassFilter_RC_1st_Factor_Cal(float deltaT, float Fcut)
  {
    return deltaT / (deltaT + 1 / (2 * M_PI * Fcut));
  }

FFT源频谱

一阶低通滤波解决传感器噪声问题_人工智能_02


一阶滤波优化后

一阶低通滤波解决传感器噪声问题_低通滤波器_03

2. 一阶滤波算法的特性

这里引用了​​一朵胖胖云​​写的相关博客内容。介绍了以节气门控制为例,用simulink进行建模仿真的低通滤波器:

一阶低通滤波解决传感器噪声问题_滤波算法_04


假定期望节气门开度变化:0-30%,调整滤波系数分别为0.05和0.1,低通滤波后得到如下曲线:

一阶低通滤波解决传感器噪声问题_人工智能_05


由图可知:

1)滤波系数越大,则更快达到目标开度,但曲线平滑性较差

2)同样的滤波系数越小,则更慢达到目标开度,但曲线更加平滑,且稳定

,因此在实际标定过程中,我们需要根据实际情况,平衡灵敏度和稳定性,来确定最终的滤波系数。