Computes the 3D discrete Fourier transform (DFT) of this matrix. The
physical layout of the output data is as follows:
this[k1][k2][2*k3] = Re[k1][k2][k3]
= Re[(n1-k1)%n1][(n2-k2)%n2][n3-k3],
this[k1][k2][2*k3+1] = Im[k1][k2][k3]
= -Im[(n1-k1)%n1][(n2-k2)%n2][n3-k3],
0<=k1<n1, 0<=k2<n2, 0<k3<n3/2,
this[k1][k2][0] = Re[k1][k2][0]
= Re[(n1-k1)%n1][n2-k2][0],
this[k1][k2][1] = Im[k1][k2][0]
= -Im[(n1-k1)%n1][n2-k2][0],
this[k1][n2-k2][1] = Re[(n1-k1)%n1][k2][n3/2]
= Re[k1][n2-k2][n3/2],
this[k1][n2-k2][0] = -Im[(n1-k1)%n1][k2][n3/2]
= Im[k1][n2-k2][n3/2],
0<=k1<n1, 0<k2<n2/2,
this[k1][0][0] = Re[k1][0][0]
= Re[n1-k1][0][0],
this[k1][0][1] = Im[k1][0][0]
= -Im[n1-k1][0][0],
this[k1][n2/2][0] = Re[k1][n2/2][0]
= Re[n1-k1][n2/2][0],
this[k1][n2/2][1] = Im[k1][n2/2][0]
= -Im[n1-k1][n2/2][0],
this[n1-k1][0][1] = Re[k1][0][n3/2]
= Re[n1-k1][0][n3/2],
this[n1-k1][0][0] = -Im[k1][0][n3/2]
= Im[n1-k1][0][n3/2],
this[n1-k1][n2/2][1] = Re[k1][n2/2][n3/2]
= Re[n1-k1][n2/2][n3/2],
this[n1-k1][n2/2][0] = -Im[k1][n2/2][n3/2]
= Im[n1-k1][n2/2][n3/2],
0<k1<n1/2,
this[0][0][0] = Re[0][0][0],
this[0][0][1] = Re[0][0][n3/2],
this[0][n2/2][0] = Re[0][n2/2][0],
this[0][n2/2][1] = Re[0][n2/2][n3/2],
this[n1/2][0][0] = Re[n1/2][0][0],
this[n1/2][0][1] = Re[n1/2][0][n3/2],
this[n1/2][n2/2][0] = Re[n1/2][n2/2][0],
this[n1/2][n2/2][1] = Re[n1/2][n2/2][n3/2]
This method computes only half of the elements of the real transform. The
other half satisfies the symmetry condition. If you want the full real
forward transform, use
getFft3
. To get back the original
data, use
ifft3
.