arm_cmplx_mag_squared_q15関数 |
複素配列の各要素の絶対値自乗を求める |
関数のソース(CMSIS 2.0以上をダウンロード・インストールする必要あり) CMSIS_2_00\CMSIS\DSP_Lib\Source\Cortex-M4-M3\BasicMathFunctions\arm_cmplx_mag_squared_q15.c サンプルソース(DFFSKN40基板付属CD-ROMに収録) 2011/09/08追加 IARprojects\src\projects\arm_cmplx_magsq 引数と戻り値 説明(イメージ) 使用例(サンプルソースの一部)
配列の要素数はそれぞれ6、すなわち複素数の数は3になる。 実験 上記のサンプルソースをDFFSKN40基板(デジタルフィルター社)にて実験した。Cortex-M4マイコンはPK40X256VMD100(Kinetis, フリースケール社)搭載。演算結果をLCDに16進数で表示している。 下の写真はn = 0のとき。 a[0] = 10000 -> 0x2710 (実数部) a[1] = -12345 -> 0xCFC7 (虚数部) 10000^2 + (-12345)^2 = 252,399,025 17ビット右シフトして1925 (= 0x0785) 下の写真はn = 1のとき。 a[0] = -20000 -> 0xB1E0 (実数部) a[1] = 30000 -> 0x7530 (虚数部) (-20000^2) + 30000^2 = 1,300,000,000 17ビット右シフトして9918 (= 0x26BE) 下の写真はn = 2のとき。 a[0] = -32768 -> 0x8000 (実数部) a[1] = -32768 -> 0x8000 (虚数部) (-32768^2) + (-32768^2) = 2,147,483,648 17ビット右シフトして16384 (= 0x4000) まめ知識 出力は3.13フォーマットなので0x4000は+2.0という意味。 極値でもオーバフローしない。 |