我在哪里可以找到真正的 FFT 和 iFFT 实现? [关闭]

Posted

技术标签:

【中文标题】我在哪里可以找到真正的 FFT 和 iFFT 实现? [关闭]【英文标题】:Where can I find a real to real FFT and iFFT implementation? [closed] 【发布时间】:2012-04-23 23:01:55 【问题描述】:

我有一个复杂到复杂的 FFT,但我需要一个真实到真实的 FFT 实现......

这是因为我的噪声消除算法适用于频域中的实数,而不是复数。

【问题讨论】:

在频域中采用实数听起来很可疑。能给个链接或参考吗? 如果您在频域中处理数据并忽略或归零虚部,IFFT 的结果可能看起来与原始数据完全不同。 从您最近在 SO 上提出的性质和大量问题中可以清楚地看出,您正在尝试解决噪音消除问题,但您缺少一些概念构建块为此需要。没有办法解决这个问题,只能研究:复数(基础数学)和一些通用的 DSP 主题(采样理论、滤波器、FFT 等)。您可能会考虑获取 MATLAB 克隆,例如 Octave,这样您就可以在学习(以及最终的噪声消除算法)时使用 DSP 概念,而无需编写(和调试)一堆 C 代码。 【参考方案1】:

唯一适用实数到实数 FFT 的情况是您的时域信号是对称的 (x(n) = x(N-n), n=1...N-1)。这是 FFT 的实际输入导致实际输出的唯一情况。否则,实际输入仍会导致 FFT 的复数输出。

实数到实数 FFT 非常罕见,通常不会专门实施。它们只是使用实数到复数 FFT 执行,丢弃了虚输出,因为它无论如何都是零。

您正在使用的需要真实频域数据的噪声消除算法是什么?它是否期望复杂样本的大小?我们需要进一步了解噪声消除算法的作用。

【讨论】:

【参考方案2】:

FFTW3 库有一个真正的 2 个真正的 FFT 实现。 fftw_plan fftw_plan_r2r_1d() http://www.fftw.org/fftw3_doc/Real_002dto_002dReal-Transforms.html

【讨论】:

请不要发布仅链接的答案。解释链接的内容以及它与问题的关系。

以上是关于我在哪里可以找到真正的 FFT 和 iFFT 实现? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

FFT和IFFT的Matlab实现(幅频响应和相频响应)

FFT 的逆函数与原始函数不同

FPGA教程案例37通信案例7——基于FPGA的FFT,IFFT傅里叶变换和逆变换

在opencv中使用FFT和IFFT有困难

FFT 和 IFFT 的长度

Python ifft