递推平均滤波法(又称滑动平均滤波法)
#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就付了一次值,如何求平均?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
后面的判断是用在buffer不满是也能出有效数字, 因为我的系统滑动时间达到了3秒, 不能让这三秒不出数或者出无效数. 坏处当然是需要做除法,影响速度, 如果都视着满buffer处理, 直接移位即可
- oldDat = temp[iter];
- temp[iter] = readD;
- iter = ++iter%32;
- sum = sum + readD - oldDat;
- if (len<32)
- {
- len++;
- }
- readD = sum / len;
复制代码一周热门 更多>