数字信号处理中,经常需要对复数进行求模运算。找了一些资料,发现对精度要求不高的情况下是有比较好的简化运算方法的。我这里整理出了如下简化步骤:
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