私はpythonを使用して、pyfftwを使用して分割ステップフーリエ変換法を作成しています。何が起こっているのかほとんど理解できたと思いますが、1 つの変数だけを操作しようとすると、なぜこれほど多くの変数が変化するのか理解できません。
以下のコードでは、1D 配列 (complex128) から始めて、E
最初に に割り当てa
ます。次に、時間と周波数の間を行き来する 2 つの操作があるように、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
問題は、コードの 2 番目の部分に入ると、割り当てもa[:] = np.power(np.absolute(A0),2)
変更さA0
れているように見えることa
です。
これはIz = np.power(np.absolute(A0),2) + fft_object()
、私が割り当てた変数、a
またはb
一時変数ではなくリンクされたままのように見える変数でも発生します。
どうしたの???