zoukankan      html  css  js  c++  java
  • 循环数据的均值滤波方法

            对于角度传感器的输出值进行均值滤波时,在角度的循环点处因数据值的非连续性,如果不对原始数据进行处理做会出现错误数据,如(354 + 5)/2= 179.5,正常值应为359.5。采用把角度值转化为三角函数值滤波后再通过反函数(结合象限)求值的方法较多,此外对于两个数据值的滤波可通过差值判断的方法也可以解决,对于多数据的滤波有什么更高效的方法呢?

           对落入阈值范围(360度情况下如:330-360;0-30)的数据采取标记的方法,在要平均的数据中只有在两种数据都存在的情况下对数据进行处理就可以了。

           int num = 5; //滤波值数量

            int i = 0;//输入值放入数组循环

            int m = 0;//标记

            int n = 0;//标记

            double[] data = new double[5];//将滤波值置入数组

            double temp, output;

            void Filter(double input)

            {

                data[i] = input;

                if (m > 0)

                    m--;

                if (n > 0)

                    n--;

                if (input > 330)

                    m = num;

                if (input < 30)

                    n = num;

                temp = 0;

                if (m > 0 && n > 0)

                {

                    for (int j = 0; j < num; j++)

                        if (data[j] < 30)

                            temp += 360;

                    output = (data.Sum() + temp) % 360;

                }

                else

                    output = data.Average();

                i++;

                if (i == num)

                    i = 0;

            }

  • 相关阅读:
    Codeforces977D ---Divide by three, multiply by two 深搜+map存出现的数
    HDU4522 湫湫系列故事——过年回家
    2018浙江省赛记录
    POJ3259 :Wormholes(SPFA判负环)
    上海高校金马五校赛 F题:1 + 2 = 3?
    牛客练习赛15A-吉姆的运算式(Python正则表达式瞎搞)
    ZOJ2018/4月月赛G题Traffic Light(广搜)
    luogu 3960 列队
    noip2017
    10.3 模拟赛
  • 原文地址:https://www.cnblogs.com/xrll/p/11934981.html
Copyright © 2011-2022 走看看