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];}