我正在使用python编写使用pyfftw的分步傅里叶变换方法。我想我主要了解发生了什么,但我不明白为什么当我尝试以一种方式操作时,我的许多变量会发生变化。pyFFTW链接更多变量比预期
在下面的代码中,我从一维数组(complex128),E
开始,最初将其分配给a
。然后,我计划了DFT,以便我有两次在时间和频率之间来回切换的操作。
我的代码:
a = pyfftw.empty_aligned(npts, dtype='complex128')
b = pyfftw.empty_aligned(npts, dtype='complex128')
a[:] = pyfftw.interfaces.numpy_fft.fftshift(E);
fft_object = pyfftw.FFTW(a, b)
EFT = fft_object()
ifft_object = pyfftw.FFTW(b, a, direction='FFTW_BACKWARD')
E = ifft_object()
A0 = E;
a[:] = np.power(np.absolute(A0),2)
IFT = fft_object()
b[:] = chi*IFT
Iz = np.power(np.absolute(A0),2) + ifft_object()
NLfn = A0 * Iz
的问题是,一旦我进入代码的第二部分,分配a[:] = np.power(np.absolute(A0),2)
似乎改变A0
以及a
。
这也发生在Iz = np.power(np.absolute(A0),2) + fft_object()
,其中在每种情况下我分配a
或b
似乎保持链接,而不是临时变量的变量。
发生了什么事?