Я пытаюсь оживить сходимость по ряду итераций для алгоритма 1-D Герхберга-Сакстона, но мне не удалось заставить его работать, используя matplotlib.animation или drawnow.Я могу построить их все на одном графике одновременно, используя цикл for в следующем коде, но хотел бы видеть их последовательно.Кто-нибудь может помочь?
import numpy as np
import pyfftw.interfaces.numpy_fft as fft
from matplotlib import pyplot as plt
aperture_width = 10
constraint_factor = 11
num_points = 2**16
aperture_x = np.linspace(-20*aperture_width, 20*aperture_width, num_points)
# object to be recovered
g = np.array( abs(aperture_x) < (aperture_width/2), dtype=np.complex128)
# Field at Image plane
G = fft.fftshift(fft.fft(fft.fftshift(g)))
#Intensity at Image plane
G = abs(G)**2 # Only known value
constraint = np.array( abs(aperture_x) < (constraint_factor/2)) #object constraint - guess of object size
Gp = np.copy(G) # make a copy of G
for i in range(10):
gp = fft.fftshift(fft.ifft(fft.fftshift(np.sqrt(Gp)))) # first object "guess"
gp = gp*constraint # apply constraint to object
Gp= fft.fftshift(fft.fft(fft.fftshift(gp))) # calculate new image plane
Gp = np.sqrt(G)*np.exp(1j*np.angle(Gp)) # apply image domain constraint
plt.plot(aperture_x,abs(G)**2/max(abs(G)**2),aperture_x,abs(Gp)**2/max(abs(Gp)**2))
plt.xlim(-3,3)
plt.pause(0.05)
plt.show()