通过应用高通巴特沃斯滤波器Android来消除加速度计记录中的重力

时间:2017-07-03 15:39:38

标签: android

作为Android项目的一部分,我必须使用高通butterworth去除3轴上加速度计值的重力值,但经过几次搜索后我还没有找到如何做到这一点。我在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,我猜价值会对结果产生影响。但我的目标不是低通滤波器,而是高通的butterworth,如果有人知道如何在Android上实现高通butterworth,请帮助我。

谢谢

1 个答案:

答案 0 :(得分:0)

我的回答可能有点迟了但是如果你是第一次使用滤镜我建议阅读FIR过滤器并使用名为fdatool的matlab工具,你可以导入代码,它可以给你如何做到这一点的想法