如何平滑安卓指南针传感器

时间:2014-11-21 12:22:02

标签: android

我正在开发一款半增强现实应用,其中平滑而准确的数据非常重要。传感器返回的值在0到4度之间跳跃,不幸的是它使生活变得困难。

我尝试过实施临时解决方案:

private float[] Total = new float[11];
private float Average(){
    if (counter == Total.length - 1) {
        counter --;
        for (int i = 0; i < Total.length - 1; i++) {
            Total[i] = Total[i + 1];
        }
    }
    float tot = 0;
    for (int i = 0; i < Total.length - 1; i++) {
        tot = tot + Total[i];
    }
    return tot/counter;
}

但这不符合我的需要任何建议或帮助吗?

1 个答案:

答案 0 :(得分:0)

您在FIR实施中使用移动均值过滤器。尽管移动平均滤波器非常简单,但它仍然是一项常见任务的最佳选择:降低随机噪声,同时保持急剧的阶跃响应。

FIR实现的缺点是计算时间随着滤波器的大小而增加。您可以考虑在IIR过滤器中实现过滤器,但对于这个简单的应用程序,我不推荐它。

另一项改进可能是使用window function来最小化边缘效应。

您可以使用汉明窗here

找到一个很好的低通滤波器示例