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

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

猜你喜欢

转载自blog.csdn.net/yinchao163/article/details/54343989