Androidプロジェクトの一環として、高域バターワースを使用して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];
で行うが、これは私がコードを考慮にスマートフォンのとで向きを取らないと言うコメントを見ているだけで私の目標ではないためにどのようにAndroidのサイトで見つけました私たちが見つけたコード、alpha = 0.8、なぜ0.8を正確に設定したのか、その値は結果に影響を与えると思います。しかし、私の目標は、ローパスフィルターではなく、ハイパスのバターワースであり、もし誰かがAndroid上でハイパスバタワースを実装する方法を知っていれば、助けてください。
はたぶん少し遅れて私の答えですが、それは私がFIRフィルタについて読んとのFDAToolと呼ばれるMATLABのツールを使用することをお勧めフィルタでの作業あなたの最初の時間である場合は、コードをインポートすることができますし、それは与えることができるあなたに
これは、リンクのみの回答のように表示されます。適切なフィルタを簡単に実装するなど、参考に小さなコードや数式を含めると役立ちます。 – WorldSEnder