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

Posted

技术标签:

【中文标题】为啥 cufft 的输入输出与传统 fft 有很大不同?【英文标题】:Why does the input and output for cufft greatly differ from traditional fft?为什么 cufft 的输入输出与传统 fft 有很大不同? 【发布时间】:2019-04-09 20:46:54 【问题描述】:

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

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

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

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

参见here(R = 实数,C = 复数,2 = 到):

请注意,我认识到一半的复杂组件本质上是重复的(但共轭和反转),因此输入输出值不需要保留重建所需的所有日期,但是没有解释任何关于 Nvidia 声称 fft 的输入和输出数据长度应该是结构化的,袖带输入和输出长度与我在考虑这种情况时所期望的相反。

【问题讨论】:

您的浏览器出现渲染问题。链接页面显示floor(x/2)+1(但使用数学符号),而不是x 2 + 1 这似乎是 Google Chrome 的问题。在 Chrome 中查看页面时,所有数学字段都是鲜红色且未格式化。在 Firefox 中查看页面时,数学字段的格式正确。 在问题中链接的 cufft 文档页面的最顶部,它说:“此文档包含数学方程式(以红色突出显示),最好使用 Firefox 4.0 或更高版本或其他 MathML 查看- 感知浏览器。此文档还有 PDF 版本。” 【参考方案1】:

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

【讨论】:

以上是关于为啥 cufft 的输入输出与传统 fft 有很大不同?的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的 FFT 提供的可视化工具输出与 Windows Media Player 不同?

为啥 cuda-memcheck racecheck 报告 cufft 错误?

将 NumPy 数组转换为 cufftComplex

如何使用 NAudio 实时计算 FFT(ASIO 输出)

FFT 和加速度计数据:为啥我会得到这个输出?

如何用 CUDA 计算大矩阵的二维 FFT?