根据我对fft函数的理解(例如来自像这样的问题),假设是1D fft,给定N个实数数据点,则将获得长度为N(但复数)+ 1的双面fft,用于零频率。如果我采用相同的fft输出并在其上运行ifft,则将获得N个实数值,并且在理想情况下,这将完全匹配fft的原始输入。
在cufft中,这似乎大不相同。
根据Nvidia的说法,提供N实数分量将导致fft的N2 + 1复数分量,而N2 + 1复数分量将导致N实数分量。
请参见此处(R =实数,C =复数,2 =到):
请注意,我认识到复数元素的一半实际上是重复的(但共轭和翻转),因此不必要为了输入和输出值来保留重建所需的所有数据。但这并未解释Nvidia声称应该如何构造fft的输入和输出数据长度,cufft的输入和输出长度与我从计算此场景得出的相反。
在cufft中,这似乎大不相同。
根据Nvidia的说法,提供N实数分量将导致fft的N2 + 1复数分量,而N2 + 1复数分量将导致N实数分量。
请参见此处(R =实数,C =复数,2 =到):
![enter image description here](https://istack.dev59.com/dgSIP.webp)
floor(x/2)+1
,而不是x 2 + 1
。 - Cris Luengo