IFFT Class Reference

Algorithm to perform an Inverse Fast Fourier Transform of a vector of Complex values representing the positive frequencies half of a symmetric FFT. More...

#include <IFFT.h>

List of all members.

Public Member Functions

 IFFT (int fftSize=1024, bool zeroPhase=true)
 ~IFFT ()
void process (const MatrixXC &fft, MatrixXR *frame)
int fftSize () const
void setFftSize (int size, bool callSetup=true)
bool zeroPhase () const
void setZeroPhase (bool zeroPhase, bool callSetup=true)


Detailed Description

Algorithm to perform an Inverse Fast Fourier Transform of a vector of Complex values representing the positive frequencies half of a symmetric FFT.

The IFFT is a fast implementation of an Inverse Discrete Fourier Transform (IDFT). The algorithm takes as input (M / 2 + 1) point vectors of Complex values (M being the FFT size), and returns N point vectors of Real values (N being the frame size).

The input of the IFFT is assumed to be the positive frequencies half of an M point magnitude symmetric and phase antisymmetric FFT. Therefore the result is a Real value vector.

Note that N can be smaller than M. In this case the last ( M - N ) coefficients will be discarded, since it assumes that zero padding has been made at the end of the frame prior to the forward FFT transform.

Alternatively the algorithm can undo the center zeropadding and the N/2 rotation if done durnig the FFT forward transform. This is specified by using the setZeroPhase() method.

Author:
Ricard Marxer
See also:
FFT, FFTComplex, IFFTComplex

Constructor & Destructor Documentation

IFFT ( int  fftSize = 1024,
bool  zeroPhase = true 
)

Constructs an IFFT object with the specified fftSize and zeroPhase setting.

Parameters:
fftSize size of the IFFT transform must be > 0, it is the target size of the transform. The algorithm performs faster for sizes which are a power of 2.
zeroPhase specifies whether or not the zero phase method was performed.

References setFftSize(), and setZeroPhase().

~IFFT (  ) 

Destroys the IFFT algorithm and frees its resources.


Member Function Documentation

void process ( const MatrixXC &  fft,
MatrixXR *  frame 
)

Performs a Inverse Fast Fourier Transform on each of the rows of fft and puts the resulting IFFT in the rows of frames.

Parameters:
fft matrix of Complex values. The number of columns of fft must be equal to the (fftSize / 2) + 1, where fftSize is parameter of the constructor or specified by setFftSize().
frame pointer to a matrix of Real values for the output. The matrix should have the same number of rows as fft and fftSize columns.
Note that if the zeroPhase setting is true, the resulting IFFT transforms will be rotated to compensate for Zero Phase method that may have been performed when the FFT had been done.

Note that if the output matrix is not of the required size it will be resized, reallocating a new memory space if necessary.

Referenced by Correlation::process(), and Autocorrelation::process().

int fftSize (  )  const

Returns the size of the FFT to be performed. The default is 1024.

See also:
setFftSize()

void setFftSize ( int  size,
bool  callSetup = true 
)

Specifies the size of the IFFT to be performed. The given size must be higher than 0. Note that if size is a power of 2 will perform faster.

See also:
fftSize()

Referenced by IFFT().

bool zeroPhase (  )  const

Returns the zero phase setting. The default is True.

See also:
setZeroPhase()

void setZeroPhase ( bool  zeroPhase,
bool  callSetup = true 
)

Specifies the zeroPhase setting.

See also:
zeroPhase()

Referenced by IFFT().


The documentation for this class was generated from the following files:

Generated on Tue Mar 31 20:38:33 2009 for Loudia by  doxygen 1.5.6