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;

            }

  • 相关阅读:
    ASP生成静态文件编码为UTF-8格式的HTML文件
    asp图片化电话号码,避免蜘蛛之类爬走用户隐私
    动态上传多个文件(asp)
    简单测试IIS下的UrlRewrite技术
    mac配置tomcat
    CSS盒子
    CSS
    HTML
    从java到python
    HTTP协议
  • 原文地址:https://www.cnblogs.com/xrll/p/11934981.html
Copyright © 2011-2022 走看看