根据我对 fft 函数的理解(例如来自 questions like this one )
假设 1D fft,给定 N 个实际数据点,我将得到长度为 N(但复数)+ 1 的双面 fft,用于第零频率。如果我采用相同的 fft 输出,并对其运行 ifft,我将获得 N 个实数值,在理想情况下,这将与 fft 的原始输入完全匹配。
在cufft ,这似乎有很大的不同。
根据 Nvidia 的说法,给出 N 个实数分量将导致 fft 的 N2 + 1 个复数分量,而 N2+1 个复数分量将导致 N 个实数分量。
参见 here (R = 真实,C = 复杂,2 = 至):
请注意,我认识到一半的复数成分本质上是重复的(但共轭和反转),因此输入输出值不必保留重建所需的所有日期,但是没有解释任何关于 Nvidia 声称 fft 的输入和输出数据长度应该如何构造的信息,cufft 输入和输出长度与我对这种情况的预期相反。
最佳答案
关于c++ - 为什么 cufft 的输入和输出与传统的 fft 有很大不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55601097/