3

http://www.tech.dmu.ac.uk/~eg/tensiometer/fft/fft.c

http://www.tech.dmu.ac.uk/~eg/tensiometer/fft/fft_test.c

我在上面的链接中找到了一个很好的用于 FFT 算法的 C 代码,用于将时域转换为频域,反之亦然。但我想知道这段代码如何工作的流程图或分步过程。我正在尝试使用蝴蝶抽取法及时分析代码以进行 FFT,但我在理解代码方面遇到了困难。该代码运行良好,并为我提供了正确的结果,但如果有人可以简要或详细地解释此代码的工作原理,那将对我非常有帮助。

我对 fft.c 代码中使用的数组和指针感到困惑。此外,我没有得到代码中的变量offsetdelta的含义。如何在代码中考虑/使用实数和虚数的矩形矩阵?请指导我。

谢谢,

4

1 回答 1

0

我强烈建议阅读:https ://stackoverflow.com/a/26355569/2521214

现在从第一眼看,偏移量和增量用于:

  • 使蝴蝶洗牌排列
  • 你从第 1 步和间隔的一半开始
  • 通过递归,您将获得 log2(N) 步骤和 1 项的间隔...
  • +/- 一个递归级别
  • 我通常以相反的顺序做蝴蝶

XX 阵列

  • 是存储子结果或输入数据的缓冲区
  • 您不能轻松地就地执行 FFT(如果有的话)
  • 所以你计算到/从临时缓冲区而不是
  • 并且在每次递归时只需交换数据和临时缓冲区(物理上或它们的含义)
于 2015-01-09T08:30:49.413 回答