- Main Page
- Classes
- Files
- Examples

- File List

# realFFTData.H

    00001 /* Copyright 2001,2002 Matt Flax <flatmax@ieee.org>
    00002    This file is part of the MFFM FFTw Wrapper library.
    00003
    00004    MFFM MFFM FFTw Wrapper library is free software; you can
    00005    redistribute it and/or modify
    00006    it under the terms of the GNU General Public License as published by
    00007    the Free Software Foundation; either version 2 of the License, or
    00008    (at your option) any later version.
    00009
    00010    MFFM FFTw Wrapper library is distributed in the hope that it will be useful,
    00011    but WITHOUT ANY WARRANTY; without even the implied warranty of
    00012    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    00013    GNU General Public License for more details.
    00014
    00015    You have received a copy of the GNU General Public License
    00016    along with the MFFM FFTw Wrapper library
    00017 */
    00018 #ifndef REALFFTDATA_H_
    00019 #define REALFFTDATA_H_
    00020
    00021 #include "realFFT.H"
    00022 #include <fftw3.h>
    00023
    00024 #include <iostream>
    00025 using namespace std;
    00026
    00027 #ifndef fftw_real
    00028 #define fftw_real double
    00029 #endif
    00030
    00031 /// class realFFTData controls and manipulates fft data
    00032 class realFFTData {
    00033   /// Var used to specify if the memory was allocated by the realFFTData class
    00034   int deleteInOutMemory;
    00035 public:
    00036   /// Specifies the size of the data array
    00037   int size;
    00038   /// Specifies the minimum and maximum power bins as used in the methods findMaxMinPowerBins and compPowerSpec
    00039   int minPowerBin, maxPowerBin;
    00040   /// the input, output and power_spectrum arrays
    00041   fftw_real *in, *out, *power_spectrum; //, *powerDeriv; power deriv. removed for now
    00042   /// The total power (summed) of the power spectrum as used in the method compPowerSpec
    00043   double totalPower;
    00044
    00045   /// All memory to be allocated internally
    00046   realFFTData(int sz);
    00047   /// input and output data arrays are to be allocated by another process
    00048   realFFTData(int sz, fftw_real*inp, fftw_real*outp);
    00049   /// Deconstructor
    00050   ~realFFTData(void);
    00051
    00052   /// Limits the maximum to 'lim' and returns the last fft bin with max
    00053   int limitHalfPowerSpec(double lim);
    00054
    00055   /// Returns the number of elements in the input and output arrays
    00056   int getSize(void){return size;}
    00057   /// Returns the number of elements in the power spectrum array
    00058   int getHalfSize(void){ if (!(size%2)) return size/2; else return size/2+1;}
    00059
    00060   /// Returns the maximum input variable
    00061   fftw_real findMaxIn(void);
    00062   /// Fills the max and min power spectrum bins
    00063   void findMaxMinPowerBins(void);
    00064
    00065   /// This function computes the power spectrum and returns the max bin
    00066   int compPowerSpec();
    00067   /// This function computes the square root of the power spectrum and returns the max bin
    00068   int sqrtPowerSpec();
    00069
    00070   //  int powerSpecDeriv(); // Find the derivative of the power spectrum
    00071
    00072   /// This function zeros the output data array (out)
    00073   void zeroFFTData(void);
    00074 };
    00075 #endif // REALFFTDATA_H_