这一定是一个愚蠢的问题,但我自己也搞不清楚哪里出了问题。我想测试pyfftw,所以我运行了以下代码:
import numpy as np
import pyfftw
a = np.random.randn(2,64,64)
b = np.zeros(2,64,33)*np.complex(0.)
pyfftw.FFTW(a,b,axes = (-2,-1), direction = 'FFTW_FORWARD')我期望将阵列b更改为阵列a的傅立叶模式。但事实证明,b仍然是全零。那么这里到底出了什么问题呢?有谁能给点提示吗?非常感谢。
下面是后续内容。感谢AKX和Hamaza指出我应该运行execute()方法来完成FFT。但现在有了另一个问题。我尝试在自定义函数中调用pyfftw。输出显示输入数组已更改为全零。
def f2fh(f):
ftmp = np.copy(f)
nz,nx,ny = f.shape
nky = ny
nkx = (nx/2)+1
fh = np.zeros((nz,nky,nkx))*np.complex(0.)
print 'ksksks',ftmp.shape,fh.shape,ftmp
pyfftw.FFTW(ftmp, fh, axes = (-2,-1), direction = 'FFTW_FORWARD').execute()
print 'a',ftmp
return fh输出为

有没有人能给出一个提示,这一次哪里出了问题?非常感谢。
发布于 2020-10-05 17:10:50
发布于 2020-10-05 17:15:58
你需要给execute()打电话。
pyfftw.FFTW(a,b,axes = (-2,-1), direction = 'FFTW_FORWARD').execute()https://stackoverflow.com/questions/64205461
复制相似问题