如何在Android中过滤加速度计数据的噪声?我想为我的样本数据创建一个高通滤波器,这样我就可以消除低频分量,而专注于高频分量。我已经读过卡尔曼滤波器可能是最适合的选择,但是我该如何在我的应用程序中集成或使用这种方法,而该应用程序将主要使用Android Java编写?还是可以首先完成?还是通过Android NDK?是否有可能实时完成此操作?
任何想法将不胜感激。谢谢!
最佳答案
实际上,Apple SDK的示例通过使用渐变来以一种更简单的方式实现过滤:
// ramp-speed-使用此值直到满意为止
const float kFilteringFactor = 0.1f;
//最后的结果存储-将定义保留在此函数之外,例如在包装物体
浮点加速[3];
//acceleration.x,.y,.z是传感器的输入
//result.x,.y,.z是过滤后的结果
//高通滤波器消除重力
accel [0] =加速度。x* kFilteringFactor + accel [0] *(1.0f-kFilteringFactor);
accel [1] =加速度。y* kFilteringFactor + accel [1] *(1.0f-kFilteringFactor);
accel [2] =加速度。z* kFilteringFactor + accel [2] *(1.0f-kFilteringFactor);
result.x =加速度x-accel [0];
result.y =加速度y-accel [1];
result.z =加速度。z-accel [2];