AD采样的平均值滤波

Posted ->大胖子

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了AD采样的平均值滤波相关的知识,希望对你有一定的参考价值。

基本问题:单片机ad采样,连续采样十次,对这十次数据取平均值。

注意:最开始的一次就是用当次的数据,以后每更新一个数据就取当前数据加上前九个数据,取平均。

先看代码:

static int _filter(int m)
{
  static int flag_first = 0, _buff[10], sum;
  const int _buff_max = 10;
  int i;
  
  if(flag_first == 0)
  {
    flag_first = 1;

    for(i = 0, sum = 0; i < _buff_max; i++)
    {
      _buff[i] = m;
      sum += _buff[i];
    }
    return m;
  }
  else
  {
    sum -= _buff[0];
    for(i = 0; i < (_buff_max - 1); i++)
    {
      _buff[i] = _buff[i + 1];
    }
    _buff[9] = m;
    sum += _buff[9];
    
    i = sum / 10.0;
    return i;
  }
}

前九次(不足十个数据),用第一个数据补。  

 

以上是关于AD采样的平均值滤波的主要内容,如果未能解决你的问题,请参考以下文章

嵌入式开发10种常见数字滤波算法

嵌入式开发10种常见数字滤波算法

曲线平滑(低通滤波和算数平均滤波)

LM3S811的AD采样,为啥始终不执行ADCProcessorTriggerADC

怎样写数字滤波程序?

PCL 滤波采样——统计学滤波