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

引数と戻り値


説明(イメージ)


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

q15_t a[] = {10000, -12345, -20000, 30000, -32768, -32768};
q15_t c[] = {0, 0, 0};

 : 中略

arm_cmplx_mag_squared_q15( a, c, 3 );

この関数を実行すると配列cの中に結果が入っている。
配列の要素数はそれぞれ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という意味。
極値でもオーバフローしない。

戻る

Top Page