滑动平均滤波

优点对周期干扰有较好的抑制作用平滑度较高适用于高频振荡的系统

缺点:灵敏度低、对偶然出现的脉冲性干扰的抑制作用较差,不易消除由脉冲干扰所引起的采样值偏差,不适用于脉冲干扰比较严重的场合,比较浪费存储器的空间

代码分享:

   for(Flow_Count=(MOV_FIL_NUM-1);Flow_Count>0;Flow_Count--)
        {
            Mov_Filter[0][Flow_Count]=Mov_Filter[0][Flow_Count-1];//元素依次平移 
        }    
        Mov_Filter[0][0]= Tst_Vale;//存入本次检测流速值
        
        IM_Flow_Count[0]++;        //检测次数  
        if(IM_Flow_Count[0]>=MOV_FIL_NUM)//已经滑动次数达到或超过了MOV_FIL_NUM
        {
            for(IM_Flow_Count[0]=0;IM_Flow_Count[0]<MOV_FIL_NUM;IM_Flow_Count[0]++)
            {
                SumFlow+=Mov_Filter[0][IM_Flow_Count[0]];//求和
            }
            Ave_Val=SumFlow/(float)MOV_FIL_NUM;//平均值
            IM_Flow_Count[0]=MOV_FIL_NUM;
            SumFlow=0.0;
        }
        else //还没有计算到 MOV_FIL_NUM 次
        {
            for(Aver_Count=0;Aver_Count<IM_Flow_Count[0];Aver_Count++)
            {
                SumFlow+=Mov_Filter[0][Aver_Count];
            }
            Ave_Val=SumFlow/(float)IM_Flow_Count[0];
            SumFlow=0.0;            
        }

程序分2个部分:

1.把数组向前平移一个元素,数组[0]存入当前检测到的值

2.进行平均,但是平均又分2种情况,

(1)当前滑动次数已经达到 MOV_FIL_NUM次,这个可以直接进行平均即可;

  (2)滑动次数还没有达到MOV_FIL_NUM次,这时候就不能直接平均,否则出错,例如MOV_FIL_NUM=5,那么存储数据的数组也是5个元素,如果只滑动了3次,那么5个元素中会有2个元素值为0(数组初始值),那么你现在只能把前三个元素平均,当然如果你的设计在开始阶段要求不高,可以不用这么做;

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值