私はpyfftwを使って分割ステップフーリエ変換メソッドを書くのにpythonを使っています。私はほとんど何が起こっているのか理解していると思いますが、私が1つの変数だけで動作しようとすると、変数の多くが変わる理由を理解できません。pyFFTWは予想以上に多くの変数をリンクします
以下のコードでは、1D配列(complex128)、E
から始めて、最初にa
に割り当てます。次に、DFTを計画して、時間と周波数の間を行き来する2つの操作を行います。
マイコード:
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
という変数には、一時変数ではなくリンクされているように見えます。
何が起こっているのですか?