This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

AWR1642: Question about clutter removing

Part Number: AWR1642

Hello

The codes shown below is for the clutter removing from mmWave SDK. Is the "1<<(obj->log2NumDopplerBins-1)" for the rounding of the value pMeanVal?

If the answer is Yes, I think a correct way to do the ROUNDING for the signed number should be "(int)(num < 0 ? (num - 0.5) : (num + 0.5))". So, how does the following codes ROUND the negative number?

if (obj->cliCfg->clutterRemovalCfg.enabled)
{
    uint32_t sumVal[2];
    cmplx32ReIm_t *pSumVal = (cmplx32ReIm_t *) sumVal;
    uint32_t meanVal;
    cmplx16ReIm_t *pMeanVal = (cmplx16ReIm_t *) &meanVal;

    mmwavelib_vecsum((int16_t *) inpDoppFftBuf,
     (int32_t *) sumVal,
     (int32_t) obj->numDopplerBins);

    pMeanVal->real = (pSumVal->real + (1<<(obj->log2NumDopplerBins-1))) >> obj->log2NumDopplerBins;
    pMeanVal->imag = (pSumVal->imag + (1<<(obj->log2NumDopplerBins-1))) >> obj->log2NumDopplerBins;

    mmwavelib_vecsubc((int16_t *) inpDoppFftBuf,
      (int16_t *) inpDoppFftBuf,
      (uint32_t) meanVal,
      (int32_t) obj->numDopplerBins);
}

Regards

Peter