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.

IWR6843AOPEVM: Principle of clutterRemoval in dss_data_path.c

Part Number: IWR6843AOPEVM

I'm using "multi_gesture_68xx_aop_dss\dss\dss_data_path.c". 

There is the value "energyInNonZeroVelBinsPerBucket", and I know that the "dss_data_path.c" does clutterRemoval processing in the following. 

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);

}

I cannot understand this. 

I think clutterRemoval is a process to ignore the part of the Range-Doppler where the speed is zero.

Does this clutterRemoval process mean the same as the following code? The following is my test code. 

for (idxDopp = 0; idxDopp < obj->numDopplerBins; idxDopp ++)
{
if (idxDopp == 0) continue;
energyInNonZeroVelBinsPerBucket[idxBucket] += (float) (obj->sumAbs2D[idxDopp] >> 7);
}

If this is not the same, I would like to know what the principle of the clutterRemova process in dss_data_path.c is.

Best Regards

Morimoto