저는 python을 사용하여 split-step 푸리에 변환 메소드를 작성했습니다. 나는 대체로 무슨 일이 벌어지고 있는지 이해하고 있다고 생각하지만, 나는 단지 하나의 변수로 작동하려고 할 때 많은 변수들이 왜 바뀌는 지 이해할 수 없다.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)
를 할당한다뿐만 아니라 a
로 A0
을 변경하는 것 같다.
Iz = np.power(np.absolute(A0),2) + fft_object()
에서도 마찬가지입니다. a
또는 b
을 할당 한 각 변수는 임시 변수가 아니라 링크 된 상태로 유지됩니다.
무슨 일 이니?