Loris::ReassignedSpectrum Class Reference

#include <ReassignedSpectrum.h>

List of all members.

Public Types

typedef FourierTransform::size_type size_type

Public Member Functions

 ReassignedSpectrum (const std::vector< double > &window)
 ReassignedSpectrum (const std::vector< double > &window, const std::vector< double > &windowDerivative)
void transform (const double *sampsBegin, const double *pos, const double *sampsEnd)
size_type size (void) const
 Return the length of the Fourier transforms.
const std::vector< double > & window (void) const
double convergence (long idx) const
double reassignedFrequency (long idx) const
double reassignedMagnitude (long idx) const
double reassignedPhase (long idx) const
double reassignedTime (long idx) const
double frequencyCorrection (long sample) const
double timeCorrection (long sample) const
double reassignedPhase (long idx, double, double) const
double reassignedMagnitude (double, long intBinNumber) const
std::complex< double > operator[] (unsigned long idx) const

Detailed Description

Computes a reassigned short-time Fourier spectrum using the transform method of Auger and Flandrin.


Member Typedef Documentation

An unsigned integral type large enough to represent the length of any transform.


Constructor & Destructor Documentation

Loris::ReassignedSpectrum::ReassignedSpectrum ( const std::vector< double > &  window  ) 

Construct a new instance using the specified short-time window. Transform lengths are the smallest power of two greater than twice the window length.

Loris::ReassignedSpectrum::ReassignedSpectrum ( const std::vector< double > &  window,
const std::vector< double > &  windowDerivative 
)

Construct a new instance using the specified short-time window and its time derivative. Transform lengths are the smallest power of two greater than twice the window length.


Member Function Documentation

double Loris::ReassignedSpectrum::convergence ( long  idx  )  const

Compute and return the convergence indicator, computed from the mixed partial derivative of spectral phase, optionally used in BW enhanced analysis as a convergence indicator. The convergence value is on the range [0,1], 0 for a sinusoid, and 1 for an impulse.

Parameters:
idx the frequency sample at which to evaluate the transform
double Loris::ReassignedSpectrum::frequencyCorrection ( long  sample  )  const

Compute the frequency correction at the specified frequency sample using the method of Auger and Flandrin to evaluate the partial derivative of spectrum phase w.r.t. time.

Correction is computed in fractional frequency samples, because that's the kind of frequency domain ramp we used on our window. sample is the frequency sample index, the nominal component frequency in samples.

double Loris::ReassignedSpectrum::reassignedFrequency ( long  idx  )  const

Return the reassigned frequency in fractional frequency samples computed at the specified transform index.

Parameters:
idx the frequency sample at which to evaluate the transform
double Loris::ReassignedSpectrum::reassignedMagnitude ( long  idx  )  const

Return the spectrum magnitude (absolute) computed at the specified transform index.

Parameters:
idx the frequency sample at which to evaluate the transform
double Loris::ReassignedSpectrum::reassignedPhase ( long  idx  )  const

Return the phase in radians computed at the specified transform index. The reassigned phase is shifted to account for the time correction according to the corrected frequency.

Parameters:
idx the frequency sample at which to evaluate the transform
double Loris::ReassignedSpectrum::reassignedTime ( long  idx  )  const

Return the reassigned time in fractional samples computed at the specified transform index.

Parameters:
idx the frequency sample at which to evaluate the transform
double Loris::ReassignedSpectrum::timeCorrection ( long  sample  )  const

Compute the time correction at the specified frequency sample using the method of Auger and Flandrin to evaluate the partial derivative of spectrum phase w.r.t. frequency.

Correction is computed in fractional samples, because that's the kind of ramp we used on our window.

void Loris::ReassignedSpectrum::transform ( const double *  sampsBegin,
const double *  pos,
const double *  sampsEnd 
)

Compute the reassigned Fourier transform of the samples on the half open range [sampsBegin, sampsEnd), aligning sampCenter with the center of the analysis window.

Parameters:
sampsBegin pointer representing the beginning of the (half-open) range of samples to transform
sampCenter the sample in the range that is to be aligned with the center of the analysis window
sampsEnd pointer representing the end of the (half-open) range of samples to transform
Precondition:
sampsBegin must not be past sampCenter
sampsEnd must be past sampCenter
Postcondition:
the transform buffers store the reassigned short-time transform data for the specified samples
const std::vector< double >& Loris::ReassignedSpectrum::window ( void   )  const

Return read access to the short-time window samples. (Peers may need to know about the analysis window or about the scale factors in introduces.)


The documentation for this class was generated from the following file:

Generated by  doxygen 1.6.2