滑动平均算法

这里提到的滑动平均滤波算法对于实时采样的一些单片机,传感器之类的,要对实时动态获取的所有值做一个求平均的运算,当然这里所说的实时数据的平均值要有一个步长(比如说最近20次最新取值算平均)。如果取N个采样值求平均,存储区中必须开辟N个数据的暂存区。每新采集一个数据便存入暂存区中,同时去掉一个最老数据,保存这N个数据始终是最新更新的数据。采用环型队列结构可以方便地实现这种数据存放方式。

两个循环遍历两个判断清空

程序代码如下:
char value_buff[N];                     //N相当于选定一个窗口大小,对窗口数据做平均!
char i=0;
char filter()
{
     char count;
     int sum=0;
     value_buff[i++]=get_data;  //get_data为实时获取的数据
     if(i==N)
         i=0;              //当数据大于数组长度,替换数据组的一个数据  相当于环形队列更新,先进先出!
if(count==5)sum=0;        //注意清空和
for(count=0;count<N;count++)
       sum+=value_buff[count];
return (char)(sum/N);
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值