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.

2837x的VCU2_CFFT的计算结果问题

针对256点的FFT,参考TI提供的例程,人为构造了一个512的输入数组buffer1Q15,奇数项为实部,也就是频率已知,幅值已知的模拟采样数据;偶数项为虚部,都为0。指定输出数组为buffer2Q15,同样也是512大小。

调用CFFT的程序:

 // Step 1: Initialize CFFT object
    CFFT.pInBuffer  = buffer1Q15;
    CFFT.pOutBuffer = buffer2Q15;
 CFFT.init = (void (*)(void *))CFFT_init256Pt;
 CFFT.run  = (void (*)(void *))CFFT_run256Pt;

 // Step 2: Initialize the handle
 handleCFFT = &CFFT;

 // Step 3: Calling the init() will setup the twiddle factor table
 CFFT.init(handleCFFT);
 CFFT.run(handleCFFT);

按照正常理解buffer2Q15为FFT计算结果,计算各次谐波的幅值。但是发现计算结果除了输入信号频率的幅值外,还有其他频率的幅值结果。最后发现输入数组buffer1Q15中保存的结果是我们预期想要的,感觉输入输出结果翻转了。这是为什么?

为了验证,对512点的CFFT进行了同样的测试,只是数组变为1024,结果和256点刚好相反,buffer2Q15中保存的是预期的计算结果。

这是为什么?