为什么cufft的输入和输出与传统的fft有很大不同?

时间:2019-04-09 20:46:55

标签: c++ cuda fft complex-numbers cufft

根据我对fft函数的理解(例如来自questions like this one

假设1D fft,给定N点真实数据,我将得到一个长度为N(但为复数)+1的双面fft(第0个频率)。如果我采用相同的fft输出,并对其执行ifft,则将获得N个实数值,在理想情况下,这将与fft的原始输入完全匹配。

cufft中,这似乎有很大不同。

根据Nvidia,给N个实数分量将导致fft的N2 + 1个复杂分量,而N2 + 1个复杂分量将导致N个实数分量。

请参见here(R =实数,C =复数,2 =表示):

enter image description here

请注意,我认识到,一半的复杂成分本质上是重复的(但共轭并颠倒了),因此输入输出值不必保留重构所需的所有日期,但是没有说明Nvidia声称应如何构造fft的输入和输出数据长度, cufft的输入和输出长度所做的事情与我对此情况的预期相反。

1 个答案:

答案 0 :(得分:5)

您在这里看到的是您的浏览器无法正确呈现MathML内容。 Firefox 66.0.2中呈现的同一张表似乎显示了您的期望:

enter image description here