这个AD滤波算法是不是有问题啊?

2020-02-10 08:58发布

递推平均滤波法(又称滑动平均滤波法)
#define N 12
char value_buf[N];
char i=0;
char filter()
{
   char count;
   int  sum=0;
   value_buf[i++] = get_ad();
   if ( i == N )   i = 0;
   for ( count=0;count<N,count++)
      sum = value_buf[count];//?????
   return (char)(sum/N);
}

那个value_buf就付了一次值,如何求平均?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
18条回答
albert_w
2020-02-10 20:25
对不起, 只有平均没有滑动.... 顺手贴一个刚刚写的硬件测试代码吧

后面的判断是用在buffer不满是也能出有效数字, 因为我的系统滑动时间达到了3秒, 不能让这三秒不出数或者出无效数. 坏处当然是需要做除法,影响速度, 如果都视着满buffer处理, 直接移位即可
  1.             oldDat = temp[iter];
  2.             temp[iter] = readD;
  3.             iter = ++iter%32;
  4.             sum = sum + readD - oldDat;
  5.             if (len<32)
  6.             {
  7.                 len++;
  8.             }
  9.             readD = sum / len;
复制代码

一周热门 更多>