arm_sin_q15関数
sin(正弦)を求める

関数のソース(CMSIS 2.0以上をダウンロード・インストールする必要あり)
CMSIS_2_00\CMSIS\DSP_Lib\Source\Cortex-M4-M3\FastMathFunctions\arm_sin_q15.c

サンプルソース(DFFSKN40基板付属CD-ROMに収録)
IARprojects\src\projects\arm_sin

引数と戻り値


説明(イメージ)




使用例(サンプルソースの一部)

q15_t x[] = {0x1000, 0x1010, 0x7000, 0x7005};
q15_t sinVal[] = {0, 0, 0, 0};

 : 中略

for(n = 0; n < 4; n++) sinVal[n] = arm_sin_q15( x[n] );


実験
上記のサンプルソースをDFFSKN40基板(デジタルフィルター社)にて実験した。Cortex-M4マイコンはPK40X256VMD100(Kinetis, フリースケール社)搭載。演算結果をLCDに16進数で表示している。

下の写真はn = 0のとき。
x[0] = 0x 1000なので、角度は0x 1000 / 0x 8000 * 2 pi = 0.25000 pi [rad]
演算結果sinVal[0] = 0x 5A81、すなわち0x 5A81 / 0x 8000 = 0.70706


下の写真はn = 1のとき。
x[1] = 0x 1010なので、角度は0x 1000 / 0x 8000 * 2 pi = 0.25097 pi [rad]
演算結果sinVal[1] = 0x 5A3A、すなわち0x 5AC8 / 0x 8000 = 0.70922


下の写真はn = 2のとき。
x[2] = 0x 7000なので、角度は0x 7000 / 0x 8000 * 2 pi = 1.75000 pi [rad]
演算結果sinVal[2] = 0x A57E、10進で-23,170、すなわち-23,170 / 32,768 = -0.70709


下の写真はn = 3のとき。
x[3] = 0x 7005なので、角度は0x 7005 / 0x 8000 * 2 pi = 1.750305 pi [rad]
演算結果sinVal[3] = 0x A595、10進で-23,147、すなわち-23,147 / 32,768 = -0.70639


まめ知識
ルックアップテーブル+多項式補間方式。テーブルは0〜2πの区間で259個のサンプル値を持つ。補間はCubic interpolationで近傍の4サンプルを使った3次式で近似される。

戻る

Top Page