最近我一直在查看 CMSIS DSP 复杂数学函数库,我看到了一些我无法完全理解的东西,因此我在 SO 上发表了第一篇文章。
我无法理解的是 he11 的复杂点积功能如何产生正确的结果?该功能可以在这里找到:复杂的点积
就我而言,这部分
for(n=0; n<numSamples; n++) {
realResult += pSrcA[(2*n)+0]*pSrcB[(2*n)+0] - pSrcA[(2*n)+1]*pSrcB[(2*n)+1];
imagResult += pSrcA[(2*n)+0]*pSrcB[(2*n)+1] + pSrcA[(2*n)+1]*pSrcB[(2*n)+0];
}
没关系,但是怎么样:
/* CReal = A[0]* B[0] + A[2]* B[2] + A[4]* B[4] + .....+ A[numSamples-2]* B[numSamples-2] */
real_sum += (*pSrcA++) * (*pSrcB++);
/* CImag = A[1]* B[1] + A[3]* B[3] + A[5]* B[5] + .....+ A[numSamples-1]* B[numSamples-1] */
imag_sum += (*pSrcA++) * (*pSrcB++);
应该可以工作,因为它错过了样本的真实*图像部分的乘积?
它可能——而且很可能是——一个非常愚蠢的问题,但不知何故,我根本看不到它起作用。