0

我在 Python 中有一个用于 2.x 版本的快速傅立叶变换函数。我想在 Python 3.x 中实现它,但是“xrange”和列表标识符存在一些问题(正如我的编译器所说)。我也不知道如何在不使用任何非标准库的情况下从我的 FFT 计算逆 FFT。代码如下。提前致谢...

 from cmath import exp,pi

 def FFT(X):
  n = len(X)
  w = exp(-2*pi*1j/n)
  if n > 1:
    X = FFT(X[::2]) + FFT(X[1::2])
    for k in xrange(n/2):
        xk = X[k]
        X[k] = xk + w**k*X[k+n/2]
        X[k+n/2] = xk - w**k*X[k+n/2]
 return X 

UPD:由于您的建议,完全重建了我的 FFT 和构建的 IFFT。PS如何关闭帖子?

4

1 回答 1

0

有几种方法可以将 FFT 转换为 IFFT。最简单的方法是去掉 w 的 exp() 函数参数中的减号。接下来是取输入的复共轭的FFT的复共轭。

如果您不缩放前向 FFT,那么通常的做法是将您的 IFFT 计算缩放 1/N(长度),以便 IFFT(FFT()) 产生相同的总和量级。如果您将 FFT 缩放 1/N,则不要缩放您的 IFFT 计算。或按 1/sqrt(N) 缩放。

于 2015-04-21T19:48:04.167 回答