【硬件资源节约】技巧:利用复数乘模块实现共轭复数乘-不经过取反加1

复数乘简单实现共轭乘

问题

已经有一个复数乘模块 Cmultiply(A,B)=C,实现了复数乘法功能:
A*B = (a+bj)(c+dj) = ac-bd + (bc+ad)j=C
则基于此模块实现复数共轭乘法 A ′ ∗ B ′ H A'*B'^H ABH?
( 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)(cdj)=(ac+bd)+(bcad)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)BH=C.imag+jC.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)=(acbd)+(ac+bd)j
交换输出次序,可发现实现了共轭乘的效果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值