2017-07-03 87 views
0

作为Android项目的一部分,我必须使用高通巴特沃斯去除3轴加速度计值上的重力值,但几次搜索我还没有找到如何去做。我对Android网站如何做低通滤波器通过应用高通巴特沃思滤波器消除加速度计记录中的重力Android

public void onSensorChanged(SensorEvent event) 

    /*alpha is calculated as t/(t + dT)*/ 
    /* with t, the low-pass filter's time-constant*/ 
    /* and dT, the event delivery rate*/ 

    final float alpha = 0.8; 

    gravity[0] = alpha * gravity[0] + (1 - alpha) * event.values[0]; 
    gravity[1] = alpha * gravity[1] + (1 - alpha) * event.values[1]; 
    gravity[2] = alpha * gravity[2] + (1 - alpha) * event.values[2]; 

    linear_acceleration[0] = event.values[0] - gravity[0]; 
    linear_acceleration[1] = event.values[1] - gravity[1]; 
    linear_acceleration[2] = event.values[2] - gravity[2]; 

,但是这不是我除了进球我看到评论说,说,代码中并没有考虑到在智能手机和方向发现我们发现的代码,alpha = 0.8,为什么它们精确地设置为0.8,我猜这个值对结果有影响。但我的目标不是低通滤波器,而是高通巴特沃斯,如果有人有一个想法如何在Android上实现高通巴特沃斯,请帮助我。

谢谢

回答

0

也许有点晚了我的答案,但如果使用滤镜的你是第一次,我建议阅读FIR滤波器,且使用所谓的FDATool MATLAB的工具,你可以导入代码,它可以给你如何做到这一点的想法。

+0

这看起来像一个链接专用的答案。这将有助于包括小代码甚至公式以供参考,例如简单实施合适的过滤器。 – WorldSEnder

相关问题