我正在尝试比较Pyfftw (在Python3.6中)和matlab r2017a快速傅立叶变换。
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这个请求正好是计算快速傅立叶变换算法的时间,也就是python对fft_object()调用的大致相同时间。
提前感谢您的支持。
发布于 2017-04-14 17:44:39
你可以看看基于GPU的代码(如果你有合适的硬件):
http://pypi.python.org/pypi/pyfft
http://pypi.python.org/pypi/scikits.cuda
它们基于PyCuda和PyOpenCL。我没有太多的经验,所以你必须做一些挖掘,以找到最适合你的。
https://stackoverflow.com/questions/43408676
复制相似问题