复数求模运算的快速近似实现方法

2019-04-14 15:31发布

数字信号处理中,经常需要对复数进行求模运算。找了一些资料,发现对精度要求不高的情况下是有比较好的简化运算方法的。我这里整理出了如下简化步骤:
1. 对复数的实部和虚部取绝对值
2. 把绝对值大的定为Max,小的定位Min
3. 模值等于Max+Min*0.25
得到的值不是精确值,但是能够满足我自己的需求。 直接上代码: struct Complex { int Re; int Im; } int ModComplex(struct Complex In) { int UgRe, UgIm, Max, Min; UgRe = In.Re > 0 ? In.Re : (-1 * In.Re); UgIm = In.Im > 0 ? In.Im : (-1 * In.Im); if(UgRe > UgIm) { Max = UgRe; Min = UgIm; } else { Max = UgIm; Min = UgRe; } return Max + (Min >> 2); } 详细资料参考如下链接:
http://blog.csdn.net/deepdsp/article/details/7621033