数据处理---滑动均值滤波的实现

     滑动均值滤波,指输出的结果与先前历史记录有关,假如变量发生突变,需要几个采样周期,输出结果才逐渐接近真实值,实际一般情况下,可以一定程度的减少数据的抖动,使数据曲线变得光滑。

    如需使用,先添加Slider_average_fliter结构体相关的内容,以便调用,如果想要过滤更多次的数据,也可以在这里增大数组的容量。

typedef struct{
u8 temp;
u8 data_capacity;
float original_value[10];
float fliter_value;
}Slider_average_fliter;

    函数实现如下,除第一次外,其他时候滑动均值滤波的次数无法改变。

float Slider_Average_fliter(Slider_average_fliter* a,u8 b,float data)
{
static float temp;
static u8 i,c;
if(i==0)
{
a->data_capacity=b;
i++;
}
a->original_value[a->temp++]=data;
if(a->data_capacity==a->temp)
{a->temp=0;}	
for(c=0;c<a->data_capacity;c++)
{
temp+=a->original_value[c];
}
a->fliter_value=temp/(a->data_capacity);
temp=0;
return  a->fliter_value;
}

     实际应用如下,现实中,data为传感器测量得到的数据,value为返回的经过滤波后的数据,value也等于abc.fliter_value。

Slider_average_fliter abc;

int main(void)
{
while(1)
{
value=Slider_Average_fliter(&abc,5,data);
}
}

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值