这一定是一个愚蠢的问题,但我自己无法弄清楚有什么问题。我想测试 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
谁能提示这次出了什么问题?非常感谢...