我正在尝试将Pyfftw(在Python 3.6中)与matlab r2017a fft进行比较。
import time
import numpy
import pyfftw
import multiprocessing
nthread = multiprocessing.cpu_count()
print(nthread)
n=2**20
a = pyfftw.empty_aligned(n, dtype='complex128')
print("fft_object = pyfftw.builders.fft(a)")
fft_object = pyfftw.builders.fft(a) #this instruction spend much time
print("generate numbers")
a[:]= 5*numpy.random.rand(n)
print(a)
print("start fft")
start = time.clock()
y=fft_object()
end4 = time.clock() - start
print(end, time:")
print(end4)
print("result")
print(y)
print(len(y))
如果我使用matlab:
x=5*rand(2^20,1);tic;fft(x);toc
这个请求只是计算fft算法的时间,也就是python调用fft_object()时的大致相同的时间。
提前感谢您的支持。
答案 0 :(得分:0)
您可以查看基于GPU的代码(如果您有合适的硬件):
http://pypi.python.org/pypi/pyfft
http://pypi.python.org/pypi/scikits.cuda
它们基于PyCuda和PyOpenCL。我对这些经验并不多,所以你必须做一些挖掘才能找到最适合你的东西。