我在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。 附:如何关闭帖子?
答案 0 :(得分:0)
有几种方法可以将FFT转换为IFFT。最简单的方法是将参数内的减号除去w的exp()函数。接下来是采用输入的复共轭的FFT的复共轭。
如果您没有缩放前向FFT,那么通常的做法是将IFFT计算缩放1 / N(长度),以便IFFT(FFT())产生相同的总和幅度。如果您将FFT缩放1 / N,则不要缩放您的IFFT计算。或者按1 / sqrt(N)进行缩放。