My question is at the boundary between signal processing and python.
I have a 2d power spectral density function (PSDF) constructed on
Nx/2 + 1 and
Ny/2 + 1 positive spatial frequency points superimposed with random phase (the random numbers are drawn from a uniform distribution). I would like to take its 2d inverse Fourier transform (in python numpy
numpy.fft.iff2()) to retrieve its
(Nx,Ny)) autocorrelation function. For this I have to construct 2d symmetries or mirrors of the complex PSDF.
Here is where my question comes in, how do I construct the mirrors? I found a tone of similar questions on the 1d
fft case which is straightforward. It turns out that in 2d
fft2, the mirrors have a different order ;
The 1st quadrant
[1:Nx/2+1,1:Ny/2+1] is the complex conjugate mirror of the 4th quadrant
[(Nx/2+2):Nx,(Ny/2+2):Ny] and the 2nd quadrant
[1:(Nx/2 +1),(Ny/2+1):Ny] is the complex conjugate mirror of the 3rd quadrant
[(Nx/2+2):Nx,1:(Ny/2+1)] (The convention of the slicing may differ between different languages and if
Ny are even or odd, so pay little attention to that).
Given that 1st and 3rd quadrants are not mirrors of each other (same with the 2nd and 4th quadrant), does it mean that you cannot reconstruct the complete
(Nx,Ny) autocorrelation function using the first
(Nx/2+1,Ny/2+1) PSDF values ?
Is there something I am missing here?
Below is a sample python code using
numpy.fft.fft2d to show this :
import numpy as np x1 = np.arange(6)*1e-5 y1 = np.arange(6)*0.25 z = np.zeros( (len(x1),len(y1)) ) z = (x1[:,np.newaxis] + 2* y1[np.newaxis,:]) + 3 z_fft = np.fft.fft2(z) np.set_printoptions(precision=3) print(z1_fft)
The screen output is the following :
[[ 1.530e+02 +0.000e+00j -9.000e+00 +1.559e+01j -9.000e+00 +5.196e+00j -9.000e+00 +0.000e+00j -9.000e+00 -5.196e+00j -9.000e+00 -1.559e+01j] [ -1.800e-04 +3.118e-04j -7.692e-16 -2.546e-15j 1.392e-15 -8.802e-16j -1.776e-15 +0.000e+00j 2.161e-15 -6.582e-16j 7.692e-16 +1.007e-15j] [ -1.800e-04 +1.039e-04j -3.251e-16 +1.776e-15j -1.717e-15 +1.110e-16j 1.776e-15 +0.000e+00j -9.477e-16 -1.110e-16j 1.213e-15 -1.776e-15j] [ -1.800e-04 +0.000e+00j -8.882e-16 +0.000e+00j 8.882e-16 +8.882e-16j -1.776e-15 +0.000e+00j 8.882e-16 -8.882e-16j -8.882e-16 -0.000e+00j] [ -1.800e-04 -1.039e-04j 1.213e-15 +1.776e-15j -9.477e-16 +1.110e-16j 1.776e-15 +0.000e+00j -1.717e-15 -1.110e-16j -3.251e-16 -1.776e-15j] [ -1.800e-04 -3.118e-04j 7.692e-16 -1.007e-15j 2.161e-15 +6.582e-16j -1.776e-15 +0.000e+00j 1.392e-15 +8.802e-16j -7.692e-16 +2.546e-15j]]