作为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,请帮助我。
谢谢
答案 0 :(得分:0)
我的回答可能有点迟了但是如果你是第一次使用滤镜我建议阅读FIR过滤器并使用名为fdatool的matlab工具,你可以导入代码,它可以给你如何做到这一点的想法