【发布时间】:2013-09-04 14:14:13
【问题描述】:
我有一些使用 numpy.fft 包的工作 python 代码,这里是一个 sn-p:
for i in range(steps):
print i
psixvec = Ux * psixvec
psikvec = Uk * np.fft.fftn(psixvec)
psixvec = np.fft.ifftn(psikvec)
return psixvec
我尝试重写此代码以使用 pyfftw 包。我想出的是以下代码,应该工作:
fft = fftw.builders.fftn(psix_align, auto_align_input = True, auto_contiguous = True,
overwrite_input = False, threads = 1, avoid_copy = False)
ifft = fftw.builders.ifftn(psik_align, auto_align_input = True, auto_contiguous = True,
overwrite_input = False, threads = 1, avoid_copy = False)
for i in range(steps):
psix_align[:] = Ux * psix_align
psik_align[:] = Uk * fft()
psix_align[:] = ifft()
return psix_align
问题是,此代码不会产生与使用 numpy.fft 包相同的结果。请参阅所附图片。
【问题讨论】:
-
哪个图像是哪个计算的结果?
-
第一张图片是numpy,第二张是pyfftw。
标签: python numpy fft fftw pyfftw