zoukankan      html  css  js  c++  java
  • 滑动平均滤波算法(递推平均滤波法)

            /// <summary>

            ///滑动平均滤波算法(递推平均滤波法)

            /// </summary>

            /// <param name="ADNum"为获得的AD数></param>

            /// GN为数组value_buf[]的元素个数,该函数主要被调用,利用参数的数组传值

            /// <returns></returns>   

            private const int GN = 12;

            private int filterPtr = 0;

            private bool isFirstGF = true;

            public float gSum = 0;

            float[] gbuf = new float[GN];

            public float GlideFilterAD(float ADNum)

            {

                if (isFirstGF)

                {

                    isFirstGF = false;

                    for (int i = 0; i < GN; i++)

                        gbuf[i] = ADNum;

                    gSum = ADNum * GN;

                    return ADNum;

                }

                else

                {

                    gSum += ADNum - gbuf[filterPtr] ;

                    gbuf[filterPtr++] = ADNum;

                    if (filterPtr == GN)

                        filterPtr = 0;    //先进先出,再求平均值

                    return (gSum / GN);

                }

            }  

           /// <summary>

           /// 限幅防抖滤波法

           /// </summary>

           /// <param name="ADNum"采样值></param>

           /// RANG:幅度  LPNUM :测试计数

           /// <returns></returns>

            private const int RANGE = 100;

            private const int LPNUM = 5;

            private float currentValue = 0;

            private int tmpCount = 0;

            private bool isFirstLF = true;

            public float LimitFilterAD(float ADNum)

            {

                if (isFirstLF)

                {

                    isFirstLF = false;

                    currentValue = ADNum;

                }

                if (Math.Abs(ADNum - currentValue) > RANGE)

                {

                    if(tmpCount++ >LPNUM)

                    {

                        isFirstLF = true;    // 初始化滑动平均值

                        tmpCount =0;

                        currentValue = ADNum;

                    }

                }

                else

               {

                    tmpCount =0;

               }

               return currentValue;

            }

  • 相关阅读:
    js直接获取当前windows登陆账号---仅适用于IE
    Windows变量路径与通配符
    IDEA数据库生成Entity 带注释, 默认值
    BIM+区块链在建筑业施工过程结算的应用
    Java中动态规则的实现方式
    Git查看本地仓库关联关系以及清理无效远程分支
    Golang把字符串数组、[]interface{}打乱、切片乱序
    Golang将map数组按照指定字段排序
    Golang把时间和数字相乘报错invalid operation: second * time.Second (mismatched types int and time.Duration)
    Golang获取明日时间及距离明日凌晨的时间差
  • 原文地址:https://www.cnblogs.com/xihong2014/p/4129341.html
Copyright © 2011-2022 走看看