MostlyHarmless 0.0.1
 
Loading...
Searching...
No Matches
marvin::math::windows Namespace Reference

Various windowing functions. An interactive graph with more intuition than the textual documentation can give can be found here More...

Classes

class  PrecomputedWindow
 Helper class for cacheing a window function in a lookup table. More...
 

Enumerations

enum class  WindowType {
  Sine , Tukey , BlackmanHarris , CosineSum ,
  Hann , Hamming
}
 

Functions

template<FloatType SampleType>
SampleType sine (SampleType n, SampleType N)
 
template<FloatType SampleType>
SampleType tukey (SampleType n, SampleType NumPoints, SampleType alpha)
 
template<FloatType SampleType>
SampleType blackmanHarris (SampleType n, SampleType N)
 
template<FloatType SampleType>
SampleType cosineSum (SampleType n, SampleType N, SampleType alpha)
 
template<FloatType SampleType>
SampleType hann (SampleType n, SampleType N)
 
template<FloatType SampleType>
SampleType hamming (SampleType n, SampleType N)
 

Detailed Description

Various windowing functions. An interactive graph with more intuition than the textual documentation can give can be found here

Enumeration Type Documentation

◆ WindowType

Represents a type of window function, for use in classes and functions which take the window type as a template argument.

Enumerator
Sine 
Tukey 
BlackmanHarris 
CosineSum 
Hann 
Hamming 

Function Documentation

◆ blackmanHarris()

template<FloatType SampleType>
SampleType marvin::math::windows::blackmanHarris ( SampleType n,
SampleType N )
nodiscard

A Blackman-Harris window. Very similar to a hamming / hann window, but reduces sidelobes at the cost of extra sinc terms.

Parameters
nThe current index into the window.
NThe total number of points in the window. n will be normalised by this.
Returns
A point n/N of the way along the Blackman-Harris window.

◆ cosineSum()

template<FloatType SampleType>
SampleType marvin::math::windows::cosineSum ( SampleType n,
SampleType N,
SampleType alpha )
nodiscard

Generalised form of cosine sum family windows, used by both hann and hamming.
Implemented as w[n] = a - (1-a) cos(2pi n/N).
As the alpha parameter affects the boundaries of the window, you're probably better of using hann or hamming instead.

Parameters
nThe current index into the window.
NThe total number of points in the window. n will be normalised by this.
alphaAffects the level of the start and end points - a value of 0.5 will set w[0] and w[1] to 0, anything below 0.5 will drop the start and end points below 0, and anything above 0.5 will raise the start and end points above 0.
Returns
A point n/N of the way along the window.

◆ hamming()

template<FloatType SampleType>
SampleType marvin::math::windows::hamming ( SampleType n,
SampleType N )
nodiscard

A specific case of a cosine sum window with an alpha of 25/46. Does not go to zero, but cancels the first sidelobe.

Parameters
nThe current index into the window.
NThe total number of points in the window. n will be normalised by this.
Returns
A point n/N of the way along the window.

◆ hann()

template<FloatType SampleType>
SampleType marvin::math::windows::hann ( SampleType n,
SampleType N )
nodiscard

A specific case of a cosine sum window with an alpha of 0.5, which goes to 0 at its boundaries, with about -18dB/8ve sidelobe rolloff in the frequency domain.

Parameters
nThe current index into the window.
NThe total number of points in the window. n will be normalised by this.
Returns
A point n/N of the way along the window.

◆ sine()

template<FloatType SampleType>
SampleType marvin::math::windows::sine ( SampleType n,
SampleType N )
nodiscard

A Sine window starting at 0, as opposed to the cosine equivalent starting at -1.

Parameters
nThe current index into the window.
NThe total number of points in the window - n will be normalised by this.
Returns
A point n/N of the way along a sine window.

◆ tukey()

template<FloatType SampleType>
SampleType marvin::math::windows::tukey ( SampleType n,
SampleType NumPoints,
SampleType alpha )
nodiscard

A Tukey window. The response of the window is determined by the value of alpha - at alpha = 0, the resulting window is identical to a rectangular window. At alpha = 1, the resulting window is identical to a hann window.

Parameters
nThe current index into the window.
NThe total number of points in the window - n will be normalised by this.
alphaThe "shape" param of the windowing function, between 0 and 1.
Returns
A point n/N of the way along a tukey window, with a shape determined by alpha.