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

标签 c++ cuda fft complex-numbers cufft

根据我对 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 = 至):

enter image description here

请注意,我认识到一半的复数成分本质上是重复的(但共轭和反转),因此输入输出值不必保留重建所需的所有日期,但是没有解释任何关于 Nvidia 声称 fft 的输入和输出数据长度应该如何构造的信息,cufft 输入和输出长度与我对这种情况的预期相反。

最佳答案

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

enter image description here

关于c++ - 为什么 cufft 的输入和输出与传统的 fft 有很大不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55601097/

相关文章:

c++ - cublas device api 输出奇怪的结果

CUDA:没有 CUDA 工具包的 nvcc

optimization - CUDA block 和网格尺寸效率

python - 使用 scipy/numpy 在 python 中进行图像处理的高通滤波器

c++ - 重载 Boost Multi_Index 查找操作

c++ - 如何使用 Qt Test 控制 QFileDialog?

c++ - 为什么我的 ifstream 程序以错误的顺序读取单词?

python - 傅立叶空间中的滤波器表现不佳

python - 计算功率谱

c++ - 如何为 1970 年 1 月 1 日 00:00:00 创建 std::chrono::time_point?