name: FourierTransform : public AlgorithmBase

synopsis:

g++ [flags ...] file ... -l /isip/tools/lib/$ISIP_BINARY/lib_algo.a

#include <FourierTransform.h>

FourierTransform(ALGORITHM algorithm = DEF_ALGORITHM);
boolean setAlgorithm(ALGORITHM algorithm);
ALGORITHM getAlgorithm();
quick start:

VectorFloat in_vec;
VectorComplexFloat out_vec;
FourierTransform df;
df.setAlgorithm(FourierTransform::FORWARD);
in_vec.assign(L"1.0, 2,0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0");
df.compute(out_vec, in_vec);
description:

The FourierTransform class is used to calculate the forward and inverse fourier transform. User can select different algorithm implementation, like discrete fourier (DF), split radix (SR) fast fourier transform, etc. The input data and output data are stored in vector objects. The input data can be of either real or complex types.

The Discrete Cosine Transform (DCT) is widely used for speech and image processing, since the DCT has the energy compaction capability and also approaches the statistically orthogonal transformation in decorrelating a signal. The DCT is a close relative of the DFT, but is more computationally efficient for signals that are real and even. For example, in a typical MFCC frontend for speech recognition, we apply an IDCT_II transformation to filterbank coefficients to get an approximation of the cepstrum, which in reality simply represents an orthogonal and compact representation of the log magnitude spectrum.

Since these algorithms have numerous options, we list them separately. The options available for the algorithm choice denoted DFT are:


The options available for the algorithm choice denoted FFT are:


The options available for the algorithm choice denoted DCT are:


The references for the algorithms described in the previous three tables are:
  1. S. Orfanidis, Introduction to Signal Processing, Prentice-Hall, Upper Saddle River, New Jersey, USA, pp. 495, ISBN 0-13-209172-0, 1996.

  2. This technique is a variation of the Goertzel algorithm. A good starting point for details is this description of the Goertzel algorithm, located within the Ptolemy toolkit.

  3. J.G.Proakis, D.G.Manolakis, Digital Signal Processing - Principles, Algorithms, and Applications, 2nd Edition, Macmillan Publishing Company, New York, pp. 727-730, 1992.

  4. J.G.Proakis, D.G.Manolakis, Digital Signal Processing - Principles, Algorithms, and Applications, 2nd Edition, Macmillan Publishing Company, New York, pp. 727-730, 1992.

  5. C.S. Burrus and T.W. Parks, DFT/FFT and Convolution Algorithms - Theory and Implementation, 2nd Edition, John Wiley and Sons, New York, New York, USA, 1985.

  6. R.N.Bracewell, "The Fast Hartley Transform," Proceedings of the IEEE, vol. 72 no. 8, pp. 1010-1018, August 1984.

  7. H. Guo, G.A. Sitton and C.S. Burrus, "The Quick Discrete Fourier Transform," Proceedings of the International Conference on Acoustics, Speech, and Signal Processsing, pp. 453-456, Adelaide, Australia, April 1994.

  8. A. Saidi, "Decimation In Time Frequency FFT Algorithm," Proceedings of the International Conference on Acoustics, Speech, and Signal Processsing, pp. 453-456, Adelaide, Australia, April 1994.
Two good references for the DCT algorithms are: The interface in this class allows the user a great deal of flexibility in configuring the resolution of the transform. For example, the length of the input and output can be set independently. The table below summarizes the behavior for all possible combinations of inputs and outputs:


See the programming examples below for more insight into how to configure these options. We recommend users being by using the default settings, and then explore options systematically from there.

dependencies:

public constants:

error codes:

protected data:

required public methods:

class-specific public methods:

private methods:

examples:

notes: