arm_cmplx_mult_cmplx_q15関数 |
2つの複素配列の各要素を乗算する |
関数のソース(CMSIS 2.0以上をダウンロード・インストールする必要あり) CMSIS_2_00\CMSIS\DSP_Lib\Source\Cortex-M4-M3\BasicMathFunctions\arm_cmplx_mult_cmplx_q15.c サンプルソース(DFFSKN40基板付属CD-ROMに収録) 2011/09/07追加 IARprojects\src\projects\arm_cmplx_multc 引数と戻り値 説明(イメージ) 乗算後は32ビットになる。その後17ビット右シフトして16ビットに収める。 使用例(サンプルソースの一部)
配列の要素数はそれぞれ6、すなわち複素数の数は3になる。 実験 上記のサンプルソースをDFFSKN40基板(デジタルフィルター社)にて実験した。Cortex-M4マイコンはPK40X256VMD100(Kinetis, フリースケール社)搭載。演算結果をLCDに16進数で表示している。 下の写真は最初の複素乗算の実数部。 a[0] = 10000 -> 0x2710 (実数部) a[1] = 20000 -> 0x4E20 (虚数部) b[0] = 13579 -> 0x350B (実数部) b[1] = -24680 -> 0x9F98 (虚数部) c[0] = (a[0] b[0] >> 17) - (a[1] b[1] >> 17) = 4801 = 0x12C1 下の写真は最初の複素乗算の虚数部。 a[0] = 10000 -> 0x2710 (実数部) a[1] = 20000 -> 0x4E20 (虚数部) b[0] = 13579 -> 0x350B (実数部) b[1] = -24680 -> 0x9F98 (虚数部) c[1] = (a[0] b[1] >> 17) + (a[1] b[0] >> 17) = 188 = 0x00BC 下の写真は2番目の複素乗算の実数部。 a[2] = 30000 -> 0x7530 (実数部) a[3] = -11111 -> 0xD499 (虚数部) b[2] = 9999 -> 0x270F (実数部) b[3] = -8888 -> 0xDD48 (虚数部) c[2] = (a[2] b[2] >> 17) - (a[3] b[3] >> 17) = 1535 = 0x05FF 下の写真は2番目の複素乗算の虚数部。 a[2] = 30000 -> 0x7530 (実数部) a[3] = -11111 -> 0xD499 (虚数部) b[2] = 9999 -> 0x270F (実数部) b[3] = -8888 -> 0xDD48 (虚数部) c[3] = (a[2] b[3] >> 17) + (a[3] b[2] >> 17) = -2883 = 0xF4BD まめ知識 乗算は複素数どうしの乗算である。 乗算後に17ビット右シフトして16ビットに収めている。Q3.13フォーマットになる。 |