J'utilise python pour écrire une méthode de transformation de Fourier en deux étapes en utilisant pyfftw. Je pense que je comprends la plupart du temps ce qui se passe, mais je ne peux pas comprendre pourquoi tant de mes variables changent quand j'essaie d'opérer sur un seul.pyFFTW liens plus de variables que prévu
Dans le code ci-dessous, je commence par un tableau 1D (complexe128), E
, et l'affecte initialement à a
. Ensuite, je passe par la planification des DFT afin que j'ai 2 opérations qui vont et viennent entre temps et fréquence.
Mon code:
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
Le problème est une fois que je reçois dans la deuxième partie du code, l'attribution a[:] = np.power(np.absolute(A0),2)
semble modifier A0
ainsi que a
.
Cela se produit également dans Iz = np.power(np.absolute(A0),2) + fft_object()
, où dans chaque cas, les variables que j'ai affecté a
ou b
semblent rester liées plutôt que d'être des variables temporaires.
Que se passe-t-il ???