gpt4 book ai didi

python - 用 pyfftw 替换 numpy.fft 例程,没有按预期工作

转载 作者:行者123 更新时间:2023-11-28 17:45:41 25 4
gpt4 key购买 nike

我有一些使用 numpy.fft 包的 python 代码,这里是一个片段:

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 fft package pyfftw package

最佳答案

已解决。对于我使用的初始化

psix_align = fftw.n_byte_align(psi0, fftw.simd_alignment, dtype='complex64')
psik_align = fftw.n_byte_align(np.zeros_like(psi0), fftw.simd_alignment, dtype='complex64')

我需要将 complex64 替换为 complex128。现在我得到了相同的结果。这可能是因为涉及的数字非常小(参见 z 轴上的 1e-11)。

编辑:也许有人可以将 pyfftw 添加到问题的标签中?

关于python - 用 pyfftw 替换 numpy.fft 例程,没有按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18616247/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com