在数字信号处理中,有时候会出现两个复数相乘,而其中一个被乘数为原始输入数的共轭的情况。举个例子:有两个输入信号:
x1 = a+b*i, x2 = c+d*i;y = x1*conj(x2) = (a+b*i)*(c-d*i) = (a*c + b*d) +(b*c - a*d)*i,其中conj(x2)表示为输入信号x2的共轭。
由于做共轭运算时原始信号x2的d要变成原始d的复数,即
conj(x2) = c-d*i
,因此一般的做法是先把x2中的d进行取反加一(补码规则)。但是这种做法增加了资源,使组合逻辑路径变长,尽管也是一种方法,但是不算较优方法。
推荐一种优化方法:
当出现上述情况时,可做适当变通:
令
x1' = a*i+b
,即让输入信号x1的实部和虚部互换一下,则变成
x1' * x2 = (a*i+b)*(c+d*i) = (a*c + b*d)*i + (b*c - a*d)
,将此结果的虚部当成实部,实部当成虚部即可 。
|