Why is ifft2(fft2(g)) different from g in NumPy?

Viewed 41

I made an object g representing a plane wave through a circular aperture with a zero phase.

When I take the inverse Fourier transform of the Fourier transform of g, the result is different from g itself. The phase is very noisy.

Why? And how can I improve it?

import numpy as np

# object (circular aperture)
M, N = 256, 256 # resolution

D = M/2
Xo, Yo = np.ogrid[:M,:N]
r = np.sqrt( (Xo-M//2)**2 + (Yo-N//2)**2 )

amplitude = r <= D/2. # real part

g = amplitude * np.exp(1j * 0) # I set the phase at zero (imaginary part)

G = np.fft.fft2(g)

gi = np.fft.ifft2(G)

See attached plot:

amplitude and phase of object before and after transform

0 Answers
Related