问题
已经有一个复数乘模块 Cmultiply(A,B)=C,实现了复数乘法功能:
A*B = (a+bj)(c+dj) = ac-bd + (bc+ad)j=C
则基于此模块实现复数共轭乘法
A
′
∗
B
′
H
A'*B'^H
A′∗B′H?
(
a
+
b
j
)
∗
(
c
−
d
j
)
=
(
a
c
+
b
d
)
+
(
b
c
−
a
d
)
j
(a+bj)*(c-dj) = (ac+bd) + (bc-ad)j
(a+bj)∗(c−dj)=(ac+bd)+(bc−ad)j
要求,不用对B取共轭(因为取反加1,涉及2次硬件计算)是否可以用交换实部、虚部次序方法获取?
解决
通过交换输入的A以及输出的C的实部虚浮,实现共轭乘到直接复数乘的转变!
硬件中,输入次序容易控制,由此每次共轭乘节约一个加、一个取反,资源优化效果极为明显!
**证明:**即求这样结论
(
A
′
.
i
m
a
g
+
j
A
′
.
r
e
a
l
)
∗
B
′
H
=
C
′
.
i
m
a
g
+
j
∗
C
′
.
r
e
a
l
(A'.imag + j A'.real)*B'^H= C'.imag + j*C'.real
(A′.imag+jA′.real)∗B′H=C′.imag+j∗C′.real
从而有
C
m
u
l
t
i
p
l
y
(
A
′
.
i
m
a
g
+
j
A
′
.
r
e
a
l
,
B
′
)
=
(
b
+
a
j
)
(
c
+
d
j
)
=
(
a
c
−
b
d
)
+
(
a
c
+
b
d
)
j
Cmultiply(A'.imag + jA'.real, B') = (b+aj)(c+dj) = (ac-bd) + (ac+bd)j
Cmultiply(A′.imag+jA′.real,B′)=(b+aj)(c+dj)=(ac−bd)+(ac+bd)j
交换输出次序,可发现实现了共轭乘的效果。