arm_cmplx_conj_q15関数
複素配列の各要素の共役複素数を求める

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

サンプルソース(DFFSKN40基板付属CD-ROMに収録) 2011/09/06追加
IARprojects\src\projects\arm_cmplx_conj

引数と戻り値


説明(イメージ)


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

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

 : 中略

arm_cmplx_conj_q15( a, c, 3 );

この関数を実行すると配列cの中に結果が入っている。
配列の要素数はそれぞれ6、すなわち複素数の数は3になる。

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

下の写真はn = 0のとき。実数部なのでそのまま。
a[0] = 10,000なので、
16進数で: 0x2710 = c[0]


下の写真はn = 1のとき。虚数部なので反転。
a[1] = -12,345なので、
16進数で: 0xCFC7
2進数で: 1100 1111 1100 0111
ビット反転して: 0011 0000 0011 1000
1を足して: 0011 0000 0011 1001
16進数で: 0x3039
10進数で: 12,345 = c[1]


下の写真はn = 2のとき。実数部なのでそのまま。
a[2] = -20,000なので、
16進数で: 0xB1E0 = c[2]


下の写真はn = 3のとき。虚数部なので反転。
a[3] = 32,767なので、
16進数で: 0x7FFF
2進数で: 0111 1111 1111 1111
ビット反転して: 1000 0000 0000 0000
1を足して: 1000 0000 0000 0001
16進数で: 0x8001
10進数で: -32,767 = c[3]


下の写真はn = 4のとき。実数部なのでそのまま。
a[4] = -32,768なので、
16進数で: 0x8000 = c[4]


下の写真はn = 5のとき。虚数部なので反転。
a[5] = -32,768なので、
16進数で: 0x8000
2進数で: 1000 0000 0000 0000
ビット反転して: 0111 1111 1111 1111
1を足して: 1000 0000 0000 0000 ←正の数なのにMSBが1になっている。
その場合、正の最大値0111 1111 1111 1111で飽和させる。
16進数で: 0x7FFF
10進数で: 32,767 = c[5]


戻る

Top Page