Brief description of class still missing. More...
#include <GaussianFrequencyBand.h>
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 () |
Brief description of class still missing.
Full description of class still missing
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;
}
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];}