Public Member Functions
GaussianFrequencyBand Class Reference

Brief description of class still missing. More...

#include <GaussianFrequencyBand.h>

List of all members.

Public Member Functions

void calculate (const FrequencyBand &f, double windowLength)
void calculate (const FrequencyBand &f, double windowLength)
 GaussianFrequencyBand ()
 GaussianFrequencyBand (const GaussianFrequencyBand &o)
 GaussianFrequencyBand ()
 GaussianFrequencyBand (const GaussianFrequencyBand &o)
int maximumIndex () const
int maximumIndex () const
int minimumIndex () const
int minimumIndex () const
double taperValue (int i) const
double taperValue (int i) const
 ~GaussianFrequencyBand ()
 ~GaussianFrequencyBand ()

Detailed Description

Brief description of class still missing.

Full description of class still missing


Constructor & Destructor Documentation

Description of constructor still missing

{
  _gaussian=0;
  _gaussianPtr=0;
}
{
  _iFreqMin=o._iFreqMin;
  _iFreqMax=o._iFreqMax;
  int n=_iFreqMax - _iFreqMin +1;
  _gaussian=new double [n];
  _gaussianPtr=_gaussian;
  memcpy(_gaussian, o._gaussian, sizeof(double)*n);
}

Description of destructor still missing

{
  delete [] _gaussian;
}

Member Function Documentation

void GaussianFrequencyBand::calculate ( const FrequencyBand &  f,
double  windowLength 
)
void GaussianFrequencyBand::calculate ( const FrequencyBand f,
double  windowLength 
)

Description still missing

References QGpCoreTools::exp(), ArrayCore::FrequencyBand::halfWidth(), ArrayCore::FrequencyBand::highLimit(), ArrayCore::FrequencyBand::lowLimit(), ArrayCore::FrequencyBand::relativeWidth(), and TRACE.

{
  TRACE;
#define GAUSS_WEIGHTING
  // Calculate frequency indexes of the bandwidth limits
  _iFreqMin=(int)round(windowLength*f.lowLimit());
  _iFreqMax=(int)round(windowLength*f.highLimit());

  int iSub=_iFreqMax-_iFreqMin;
  delete [] _gaussian;
  _gaussian=new double[iSub+1];
  _gaussianPtr=_gaussian-_iFreqMin;
#ifdef GAUSS_WEIGHTING
  /*
    Multiplication of spectrum by a Gaussian window function:
    G(f)=exp(-((2/(b*fc)*(f-fc))^2, hence sigma=b*Fc/sqrt(8), sqrt(8)=2.83
    which imply that G(fc-b*fc)=0.01378
  */
  double b=2.0/f.relativeWidth();
  double a=2.0/(windowLength*f.halfWidth());
  for(int i=_iFreqMin;i<=_iFreqMax;i++ ) {
    double v=a*i-b;
    _gaussianPtr[i]=exp(-v*v);
  }
#else
  for(int i=iFreqMin; i<=_iFreqMax; i++ ) {
    _gaussianPtr[i]=1.0;
  }
#endif
  /*for(int i=_iFreqMin;i<=_iFreqMax;i++ ) {
    printf("Weighting function %i %lf %lf\n",i,i/windowLength,_gaussianPtr[i]);
  }*/
}
int GaussianFrequencyBand::maximumIndex ( ) const [inline]
{return _iFreqMax;}
int GaussianFrequencyBand::maximumIndex ( ) const [inline]
{return _iFreqMax;}
int GaussianFrequencyBand::minimumIndex ( ) const [inline]
{return _iFreqMin;}
int GaussianFrequencyBand::minimumIndex ( ) const [inline]
{return _iFreqMin;}
double GaussianFrequencyBand::taperValue ( int  i) const [inline]
{return _gaussianPtr[i];}
double GaussianFrequencyBand::taperValue ( int  i) const [inline]
{return _gaussianPtr[i];}

The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines