Hi,
In labs\common\src\dpu\capon3d\modules\DoA\CaponBF2D\src\RADARDEMO_aoaEst2DCaponBF_rnEstInv.c you will find below code.
My customer is asking why the code only uses the even chirp 1DFFT data, but not odd chirp info. Would you pls help?
void RADARDEMO_aoaEst2DCaponBF_covInv()
{
...
/*Rn estimation */
diagSum = 0.f;
for (antIdx = 0; antIdx < nRxAnt; antIdx++)
{
input1 = (cplx16_t *) &inputAntSamples[virtAntInd2Proc[antIdx] * nChirps];
//i = antIdx case -- diagonal elements
acc = _ftof2(0.f, 0.f);
acc1 = _ftof2(0.f, 0.f);
acc2 = _ftof2(0.f, 0.f);
acc3 = _ftof2(0.f, 0.f);
for (chirpIdx = 0; chirpIdx < nChirps; chirpIdx += 8)
{
llinput1 = _amem8(&input1[chirpIdx]);
itemp1 = _hill(llinput1);
itemp1 = _packhl2(itemp1, _ssub2(0, itemp1));
lltemp = _cmpy(_hill(llinput1), itemp1);
itemp1 = _loll(llinput1);
itemp1 = _packhl2(itemp1, _ssub2(0, itemp1));
lltemp = _dadd(lltemp, _cmpy(_loll(llinput1), itemp1));
acc = _daddsp(acc, _dintsp(lltemp));
llinput1 = _amem8(&input1[chirpIdx + 2]);
itemp1 = _hill(llinput1);
itemp1 = _packhl2(itemp1, _ssub2(0, itemp1));
lltemp = _cmpy(_hill(llinput1), itemp1);
itemp1 = _loll(llinput1);
itemp1 = _packhl2(itemp1, _ssub2(0, itemp1));
lltemp = _dadd(lltemp, _cmpy(_loll(llinput1), itemp1));
acc2 = _daddsp(acc2, _dintsp(lltemp));
llinput1 = _amem8(&input1[chirpIdx + 4]);
itemp1 = _hill(llinput1);
itemp1 = _packhl2(itemp1, _ssub2(0, itemp1));
lltemp = _cmpy(_hill(llinput1), itemp1);
itemp1 = _loll(llinput1);
itemp1 = _packhl2(itemp1, _ssub2(0, itemp1));
lltemp = _dadd(lltemp, _cmpy(_loll(llinput1), itemp1));
acc1 = _daddsp(acc1, _dintsp(lltemp));
llinput1 = _amem8(&input1[chirpIdx + 6]);
itemp1 = _hill(llinput1);
itemp1 = _packhl2(itemp1, _ssub2(0, itemp1));
lltemp = _cmpy(_hill(llinput1), itemp1);
itemp1 = _loll(llinput1);
itemp1 = _packhl2(itemp1, _ssub2(0, itemp1));
lltemp = _dadd(lltemp, _cmpy(_loll(llinput1), itemp1));
acc3 = _daddsp(acc3, _dintsp(lltemp));
}
Thanks,
Chris