Fourier transform functions

```// global functions

void mrpt::math::fft_real(CVectorFloat& in_realData, CVectorFloat& out_FFT_Re, CVectorFloat& out_FFT_Im, CVectorFloat& out_FFT_Mag);
void mrpt::math::dft2_real(const CMatrixFloat& in_data, CMatrixFloat& out_real, CMatrixFloat& out_imag);
void mrpt::math::idft2_real(const CMatrixFloat& in_real, const CMatrixFloat& in_imag, CMatrixFloat& out_data);
void mrpt::math::dft2_complex(const CMatrixFloat& in_real, const CMatrixFloat& in_imag, CMatrixFloat& out_real, CMatrixFloat& out_imag);
void mrpt::math::idft2_complex(const CMatrixFloat& in_real, const CMatrixFloat& in_imag, CMatrixFloat& out_real, CMatrixFloat& out_imag);
void mrpt::math::cross_correlation_FFT(const CMatrixFloat& A, const CMatrixFloat& B, CMatrixFloat& out_corr);```

Global Functions

```void mrpt::math::fft_real(
CVectorFloat& in_realData,
CVectorFloat& out_FFT_Re,
CVectorFloat& out_FFT_Im,
CVectorFloat& out_FFT_Mag
)```

Computes the FFT of a 2^N-size vector of real numbers, and returns the Re+Im+Magnitude parts.

fft2_real

`void mrpt::math::dft2_real(const CMatrixFloat& in_data, CMatrixFloat& out_real, CMatrixFloat& out_imag)`

Compute the 2D Discrete Fourier Transform (DFT) of a real matrix, returning the real and imaginary parts separately.

Parameters:

 in_data The N_1xN_2 matrix. out_real The N_1xN_2 output matrix which will store the real values (user has not to initialize the size of this matrix). out_imag The N_1xN_2 output matrix which will store the imaginary values (user has not to initialize the size of this matrix).

fft_real, ifft2_read, fft2_complex If the dimensions of the matrix are powers of two, the fast fourier transform (FFT) is used instead of the general algorithm.

`void mrpt::math::idft2_real(const CMatrixFloat& in_real, const CMatrixFloat& in_imag, CMatrixFloat& out_data)`

Compute the 2D inverse Discrete Fourier Transform (DFT)

Parameters:

 in_real The N_1xN_2 input matrix with real values. in_imag The N_1xN_2 input matrix with imaginary values. out_data The N_1xN_2 output matrix (user has not to initialize the size of this matrix). Note that the real and imaginary parts of the FFT will NOT be checked to assure that they represent the transformation of purely real data. If the dimensions of the matrix are powers of two, the fast fourier transform (FFT) is used instead of the general algorithm.

fft_real, fft2_real

```void mrpt::math::dft2_complex(
const CMatrixFloat& in_real,
const CMatrixFloat& in_imag,
CMatrixFloat& out_real,
CMatrixFloat& out_imag
)```

Compute the 2D Discrete Fourier Transform (DFT) of a complex matrix, returning the real and imaginary parts separately.

Parameters:

 in_real The N_1xN_2 matrix with the real part. in_imag The N_1xN_2 matrix with the imaginary part. out_real The N_1xN_2 output matrix which will store the real values (user has not to initialize the size of this matrix). out_imag The N_1xN_2 output matrix which will store the imaginary values (user has not to initialize the size of this matrix). If the dimensions of the matrix are powers of two, the fast fourier transform (FFT) is used instead of the general algorithm.

```void mrpt::math::idft2_complex(
const CMatrixFloat& in_real,
const CMatrixFloat& in_imag,
CMatrixFloat& out_real,
CMatrixFloat& out_imag
)```

Compute the 2D inverse Discrete Fourier Transform (DFT).

Parameters:

 in_real The N_1xN_2 input matrix with real values, where both dimensions MUST BE powers of 2. in_imag The N_1xN_2 input matrix with imaginary values, where both dimensions MUST BE powers of 2. out_real The N_1xN_2 output matrix for real part (user has not to initialize the size of this matrix). out_imag The N_1xN_2 output matrix for imaginary part (user has not to initialize the size of this matrix).

`void mrpt::math::cross_correlation_FFT(const CMatrixFloat& A, const CMatrixFloat& B, CMatrixFloat& out_corr)`