Main Page | Modules | Alphabetical List | Data Structures | Directories | File List | Data Fields | Globals

psVectorFFT.h

Go to the documentation of this file.
00001 /** @file  psVectorFFT.h
00002  *
00003  *  @brief Contains FFT transform related functions for psVector
00004  *
00005  *  @ingroup Transform
00006  *
00007  *  @author Robert DeSonia, MHPCC
00008  *
00009  *  @version $Revision: 1.1.1.1 $ $Name:  $
00010  *  @date $Date: 2005/09/14 20:42:48 $
00011  *
00012  *  Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii
00013  */
00014 
00015 #ifndef PS_VECTOR_FFT_H
00016 #define PS_VECTOR_FFT_H
00017 
00018 #include "psVector.h"
00019 
00020 /// @addtogroup Transform
00021 /// @{
00022 
00023 /** Specify direction of FFT */
00024 typedef enum {
00025     /// psImageFFT/psVectorFFT should perform a forward FFT.
00026     PS_FFT_FORWARD = 1,
00027 
00028     /// psImageFFT/psVectorFFT should perform a reverse FFT.
00029     PS_FFT_REVERSE = 2,
00030 
00031     /// psImageFFT/psVectorFFT should perform a reverse FFT with a real result.
00032     PS_FFT_REAL_RESULT = 4
00033 } psFFTFlags;
00034 
00035 
00036 /** Forward and reverse FFT calculations.
00037  *
00038  *  This takes as input the vector of interest (in) and the direction
00039  *  (direction), which is specified by an enumerated type psFftDirection.
00040  *  The input vector may be of type psF32 or psC32, the result is always
00041  *  psC32. If the input vector is psF32, the direction must be forward.
00042  *
00043  *  @return psVector* the FFT transformation result
00044  */
00045 psVector* psVectorFFT(
00046     psVector* out,                     ///< a psVector to recycle.  If NULL, a new psVector is made.
00047     const psVector* in,                ///< the vector to apply transform to
00048     psFFTFlags direction               ///< the direction of the transform
00049 );
00050 
00051 /** extract the real portion of a complex vector
00052  *
00053  *  @return psVector*   real portion of the input vector.
00054  */
00055 psVector* psVectorReal(
00056     psVector* out,                     ///< a psVector to recycle.  If NULL, a new psVector is made.
00057     const psVector* in                ///< the psVector to extract real portion from
00058 );
00059 
00060 /** extract the imaginary portion of a complex vector
00061  *
00062  *  @return psVector*   imaginary portion of the input vector.
00063  */
00064 psVector* psVectorImaginary(
00065     psVector* out,                     ///< a psVector to recycle.  If NULL, a new psVector is made.
00066     const psVector* in                 ///< the psVector to extract imaginary portion from
00067 );
00068 
00069 /** creates a complex vector from separate real and imaginary vectors
00070  *
00071  *  @return psVector*   resulting complex vector
00072  */
00073 psVector* psVectorComplex(
00074     psVector* out,                     ///< a psVector to recycle.  If NULL, a new psVector is made.
00075     const psVector* real,              ///< the real vector
00076     const psVector* imag               ///< the imaginary vector
00077 );
00078 
00079 /** computes the complex conjugate of a vector
00080  *
00081  *  @return psVector*   the complex conjugate of the 'in' vector
00082  */
00083 psVector* psVectorConjugate(
00084     psVector* out,                     ///< a psVector to recycle.  If NULL, a new psVector is made.
00085     const psVector* in                 ///< the psVector to compute conjugate of
00086 );
00087 
00088 /** computes the power spectrum of a vector
00089  *
00090  *  @return psVector*   the power spectrum of the 'in' vector
00091  */
00092 psVector* psVectorPowerSpectrum(
00093     psVector* out,                     ///< a psVector to recycle.  If NULL, a new psVector is made.
00094     const psVector* in                 ///< the psVector to power spectrum of
00095 );
00096 
00097 /// @}
00098 
00099 #endif // #ifndef PS_VECTOR_FFT_H

Generated on Wed Sep 14 10:42:48 2005 for Pan-STARRS Foundation Library by  doxygen 1.4.2