1

我正在尝试将 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() 的时间大致相同。

预先感谢您的支持。

4

1 回答 1

0

你可以看看基于 GPU 的代码(如果你有合适的硬件):

http://pypi.python.org/pypi/pyfft

http://pypi.python.org/pypi/scikits.cuda

它们基于 PyCuda 和 PyOpenCL。我对这些没有太多经验,所以你必须做一些挖掘才能找到最适合你的东西。

于 2017-04-14T09:44:39.083 回答