arm_cmplx_mag_squared_q15関数 |
複素配列の各要素の絶対値自乗を求める |
![]() CMSIS_2_00\CMSIS\DSP_Lib\Source\Cortex-M4-M3\BasicMathFunctions\arm_cmplx_mag_squared_q15.c ![]() 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という意味。 極値でもオーバフローしない。 |