FFT算法C代码说明

时间:2015-01-09 05:28:26

标签: c algorithm signal-processing fft ifft

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代码中使用的数组和指针感到困惑。此外,我没有得到代码中的偏移 delta 变量。如何在代码中考虑/使用实数和虚数项的矩形矩阵?请指导我。

谢谢, Psbk

1 个答案:

答案 0 :(得分:0)

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

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

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

XX阵列

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