FFT算法C代码解释

FFT Algorithm C Code Explaination

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 是什么意思。实部和虚部的矩形矩阵在代码中是如何considered/used的??请指导我。

谢谢, Psbk

我强烈推荐阅读这篇文章:

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

  • 进行蝴蝶随机排列
  • 你从第 1 步和一半的间隔开始
  • 通过递归,您将得到 log2(N) 步和 1 项的间隔 ...
  • +/- 一级递归
  • 蝴蝶我一般都是倒序做的

XX数组

  • 是一个缓冲区,用于存储子结果或输入数据
  • 您无法轻松地就地执行 FFT(如果有的话)
  • 所以你计算 to/from 临时缓冲区
  • 并且在每次递归时只需交换数据和临时缓冲区(物理上或它们的含义)