組み込みアプリケーションで回転(およびその他の)変換を行う必要があります。これには、sin()、cos()およびtan()関数が必要です。私はあなたがルックアップテーブルを使用できることを知っています、そしてそれは私が自分の研究をすることを見つけることができた唯一の解決策ですが、そこに良い固定小数点トリガーライブラリがありますか?
アプリケーションにcortex M3を使用することを考えているので、アプリケーションをすばらしく保つために、できるだけ浮動小数点から離れたいと思います。
組み込みアプリケーションで回転(およびその他の)変換を行う必要があります。これには、sin()、cos()およびtan()関数が必要です。私はあなたがルックアップテーブルを使用できることを知っています、そしてそれは私が自分の研究をすることを見つけることができた唯一の解決策ですが、そこに良い固定小数点トリガーライブラリがありますか?
アプリケーションにcortex M3を使用することを考えているので、アプリケーションをすばらしく保つために、できるだけ浮動小数点から離れたいと思います。
回答:
組み込みアプリケーションで三角法を行うための優れたアプローチは、必要な関数に多項式近似を使用することです。コードはコンパクトで、データはいくつかの係数で構成され、必要な演算は乗算と加算/減算だけです。多くの組み込みシステムにはハードウェア乗算器があり、優れたパフォーマンスを提供します。
_Fract
私のがらくたの一部です。それがC委員会によって「標準化」されたという事実は嫌いです。多くの状況では意味をなさないすべてに対してQ15またはQ31を使用することを強制し、それらの状況の助けなしに立ち往生してしまいます。
このために固定小数点Cortexライブラリを使用することに反対していますか?
q31_t arm_sin_q31(q31_t x)
Q31データの三角関数正弦関数の高速近似。
から:
CMSIS-DSP:さまざまなデータタイプ用の60を超える関数を含むDSPライブラリコレクション:固定小数点(小数q7、q15、q31)および単精度浮動小数点(32ビット)。ライブラリは、Cortex-M0、Cortex-M3、およびCortex-M4で使用できます。
2次補間のルックアップテーブルを使用しますが、かなり高速です。これを線形補間に適用すると、速度は上がりますがエラーが増えます。
また、Cortex M4に必ずしもFPUが搭載されているわけではないことにも注意してください。もしそうなら「M4F」と呼ばれるのを見たことがあります。