给定大量数据如何计算FFT?

时间:2017-06-28 19:05:52

标签: python

def fft(self, x):
    N = len(x)
    if N <= 1: return x
    even = fft(x[0::2])
    odd =  fft(x[1::2])
    T= [exp(-2j*pi*k/N)*odd[k] for k in range(N//2)]
    return [even[k] + T[k] for k in range(N//2)] + \
           [even[k] - T[k] for k in range(N//2)]

所以这是给我的代码。我不确定它的作用以及如何解决它。任何人都可以帮助和解释python的学习程序员吗?或者任何人都可以提供有关如何计算FFT的新代码?

1 个答案:

答案 0 :(得分:1)

您应该使用与NumPy连接的外部库来实现高性能例程。除非必须,否则不要自己动手。 scipy有一个fft例程。

保存自己的工作:Python是“包含电池”。

他们给出的例子是:

>>> from scipy.fftpack import fft, ifft
>>> x = np.arange(5)
>>> np.allclose(fft(ifft(x)), x, atol=1e-15)  # within numerical accuracy.
True

如果您需要超高性能且数据量非常大(大于内存),请考虑使用dask