GNU Radio Manual and C++ API Reference  3.8.1.0
The Free & Open Software Radio Ecosystem
gr::fft::window Class Reference

#include <gnuradio/fft/window.h>

Public Types

enum  win_type {
  WIN_HAMMING = 0, WIN_HANN = 1, WIN_BLACKMAN = 2, WIN_RECTANGULAR = 3,
  WIN_KAISER = 4, WIN_BLACKMAN_hARRIS = 5, WIN_BLACKMAN_HARRIS, WIN_BARTLETT = 6,
  WIN_FLATTOP = 7
}
 

Static Public Member Functions

static double max_attenuation (win_type type, double beta=6.76)
 Given a window::win_type, this tells you the maximum attenuation you can expect. More...
 
static std::vector< float > coswindow (int ntaps, float c0, float c1, float c2)
 Helper function to build cosine-based windows. 3-coefficient version. More...
 
static std::vector< float > coswindow (int ntaps, float c0, float c1, float c2, float c3)
 Helper function to build cosine-based windows. 4-coefficient version. More...
 
static std::vector< float > coswindow (int ntaps, float c0, float c1, float c2, float c3, float c4)
 Helper function to build cosine-based windows. 5-coefficient version. More...
 
static std::vector< float > rectangular (int ntaps)
 Build a rectangular window. More...
 
static std::vector< float > hamming (int ntaps)
 Build a Hamming window. More...
 
static std::vector< float > hann (int ntaps)
 Build a Hann window (sometimes known as Hanning). More...
 
static std::vector< float > hanning (int ntaps)
 Alias to build a Hann window. More...
 
static std::vector< float > blackman (int ntaps)
 Build an exact Blackman window. More...
 
static std::vector< float > blackman2 (int ntaps)
 Build Blackman window, variation 1. More...
 
static std::vector< float > blackman3 (int ntaps)
 Build Blackman window, variation 2. More...
 
static std::vector< float > blackman4 (int ntaps)
 Build Blackman window, variation 3. More...
 
static std::vector< float > blackman_harris (int ntaps, int atten=92)
 Build a Blackman-harris window with a given attenuation. More...
 
static std::vector< float > blackmanharris (int ntaps, int atten=92)
 
static std::vector< float > nuttall (int ntaps)
 Build a Nuttall (or Blackman-Nuttall) window. More...
 
static std::vector< float > nuttal (int ntaps)
 
static std::vector< float > blackman_nuttall (int ntaps)
 Alias to the Nuttall window. More...
 
static std::vector< float > blackman_nuttal (int ntaps)
 
static std::vector< float > nuttall_cfd (int ntaps)
 Build a Nuttall continuous first derivative window. More...
 
static std::vector< float > nuttal_cfd (int ntaps)
 
static std::vector< float > flattop (int ntaps)
 Build a flat top window. More...
 
static std::vector< float > kaiser (int ntaps, double beta)
 Build a Kaiser window with a given beta. More...
 
static std::vector< float > bartlett (int ntaps)
 Build a Barlett (triangular) window. More...
 
static std::vector< float > welch (int ntaps)
 
static std::vector< float > parzen (int ntaps)
 Build a Parzen (or de la Valle-Poussin) window. More...
 
static std::vector< float > exponential (int ntaps, double d)
 Build an exponential window with a given decay. More...
 
static std::vector< float > riemann (int ntaps)
 Build a Riemann window. More...
 
static std::vector< float > build (win_type type, int ntaps, double beta)
 Build a window using gr::fft::win_type to index the type of window desired. More...
 

Member Enumeration Documentation

◆ win_type

Enumerator
WIN_HAMMING 

Hamming window; max attenuation 53 dB.

WIN_HANN 

Hann window; max attenuation 44 dB.

WIN_BLACKMAN 

Blackman window; max attenuation 74 dB.

WIN_RECTANGULAR 

Basic rectangular window; max attenuation 21 dB.

WIN_KAISER 

Kaiser window; max attenuation see window::max_attenuation.

WIN_BLACKMAN_hARRIS 

Blackman-harris window; max attenuation 92 dB.

WIN_BLACKMAN_HARRIS 

alias to WIN_BLACKMAN_hARRIS for capitalization consistency

WIN_BARTLETT 

Barlett (triangular) window; max attenuation 26 dB.

WIN_FLATTOP 

flat top window; useful in FFTs; max attenuation 93 dB

Member Function Documentation

◆ bartlett()

static std::vector<float> gr::fft::window::bartlett ( int  ntaps)
static

Build a Barlett (triangular) window.

See:

  A. V. Oppenheim and R. W. Schafer, "Discrete-Time
  Signal Processing," Upper Saddle River, N.J.: Prentice
  Hall, 2010, pp. 535-538.
Parameters
ntapsNumber of coefficients in the window.

◆ blackman()

static std::vector<float> gr::fft::window::blackman ( int  ntaps)
static

Build an exact Blackman window.

See:

  A. V. Oppenheim and R. W. Schafer, "Discrete-Time
  Signal Processing," Upper Saddle River, N.J.: Prentice
  Hall, 2010, pp. 535-538.
Parameters
ntapsNumber of coefficients in the window.

◆ blackman2()

static std::vector<float> gr::fft::window::blackman2 ( int  ntaps)
static

Build Blackman window, variation 1.

◆ blackman3()

static std::vector<float> gr::fft::window::blackman3 ( int  ntaps)
static

Build Blackman window, variation 2.

◆ blackman4()

static std::vector<float> gr::fft::window::blackman4 ( int  ntaps)
static

Build Blackman window, variation 3.

◆ blackman_harris()

static std::vector<float> gr::fft::window::blackman_harris ( int  ntaps,
int  atten = 92 
)
static

Build a Blackman-harris window with a given attenuation.

    f. j. harris, "On the use of windows for harmonic analysis
    with the discrete Fourier transforms," Proc. IEEE, Vol. 66,
    ppg. 51-83, Jan. 1978.
Parameters
ntapsNumber of coefficients in the window.
attenAttenuation factor. Must be [61, 67, 74, 92]. See the above paper for details.

◆ blackman_nuttal()

static std::vector<float> gr::fft::window::blackman_nuttal ( int  ntaps)
static

Deprecated: use blackman_nuttall window instead.

◆ blackman_nuttall()

static std::vector<float> gr::fft::window::blackman_nuttall ( int  ntaps)
static

Alias to the Nuttall window.

Parameters
ntapsNumber of coefficients in the window.

◆ blackmanharris()

static std::vector<float> gr::fft::window::blackmanharris ( int  ntaps,
int  atten = 92 
)
static

◆ build()

static std::vector<float> gr::fft::window::build ( win_type  type,
int  ntaps,
double  beta 
)
static

Build a window using gr::fft::win_type to index the type of window desired.

Parameters
typea gr::fft::win_type index for the type of window.
ntapsNumber of coefficients in the window.
betaUsed only for building Kaiser windows.

◆ coswindow() [1/3]

static std::vector<float> gr::fft::window::coswindow ( int  ntaps,
float  c0,
float  c1,
float  c2 
)
static

Helper function to build cosine-based windows. 3-coefficient version.

◆ coswindow() [2/3]

static std::vector<float> gr::fft::window::coswindow ( int  ntaps,
float  c0,
float  c1,
float  c2,
float  c3 
)
static

Helper function to build cosine-based windows. 4-coefficient version.

◆ coswindow() [3/3]

static std::vector<float> gr::fft::window::coswindow ( int  ntaps,
float  c0,
float  c1,
float  c2,
float  c3,
float  c4 
)
static

Helper function to build cosine-based windows. 5-coefficient version.

◆ exponential()

static std::vector<float> gr::fft::window::exponential ( int  ntaps,
double  d 
)
static

Build an exponential window with a given decay.

See: http://en.wikipedia.org/wiki/Window_function#Exponential_or_Poisson_window

Parameters
ntapsNumber of coefficients in the window.
dDecay of d dB over half the window length.

◆ flattop()

static std::vector<float> gr::fft::window::flattop ( int  ntaps)
static

Build a flat top window.

See: http://en.wikipedia.org/wiki/Window_function#Flat_top_window

Parameters
ntapsNumber of coefficients in the window.

◆ hamming()

static std::vector<float> gr::fft::window::hamming ( int  ntaps)
static

Build a Hamming window.

See:

  A. V. Oppenheim and R. W. Schafer, "Discrete-Time
  Signal Processing," Upper Saddle River, N.J.: Prentice
  Hall, 2010, pp. 535-538.
Parameters
ntapsNumber of coefficients in the window.

◆ hann()

static std::vector<float> gr::fft::window::hann ( int  ntaps)
static

Build a Hann window (sometimes known as Hanning).

See:

  A. V. Oppenheim and R. W. Schafer, "Discrete-Time
  Signal Processing," Upper Saddle River, N.J.: Prentice
  Hall, 2010, pp. 535-538.
Parameters
ntapsNumber of coefficients in the window.

◆ hanning()

static std::vector<float> gr::fft::window::hanning ( int  ntaps)
static

Alias to build a Hann window.

Parameters
ntapsNumber of coefficients in the window.

◆ kaiser()

static std::vector<float> gr::fft::window::kaiser ( int  ntaps,
double  beta 
)
static

Build a Kaiser window with a given beta.

See:

    A. V. Oppenheim and R. W. Schafer, "Discrete-Time
    Signal Processing," Upper Saddle River, N.J.: Prentice
    Hall, 2010, pp. 541-545.
Parameters
ntapsNumber of coefficients in the window.
betaShaping parameter of the window. See the discussion in Oppenheim and Schafer.

◆ max_attenuation()

static double gr::fft::window::max_attenuation ( win_type  type,
double  beta = 6.76 
)
static

Given a window::win_type, this tells you the maximum attenuation you can expect.

For most windows, this is a set value. For the Kaiser window, the attenuation is based on the value of beta. The actual relationship is a piece-wise exponential relationship to calculate beta from the desired attenuation and can be found on page 542 of Oppenheim and Schafer (Discrete-Time Signal Processing, 3rd edition). To simplify this function to solve for A given beta, we use a linear form that is exact for attenuation >= 50 dB.

For an attenuation of 50 dB, beta = 4.55.

For an attenuation of 70 dB, beta = 6.76.

Parameters
typeThe window::win_type enumeration of the window type.
betaBeta value only used for the Kaiser window.

◆ nuttal()

static std::vector<float> gr::fft::window::nuttal ( int  ntaps)
static

Deprecated: use nuttall window instead.

◆ nuttal_cfd()

static std::vector<float> gr::fft::window::nuttal_cfd ( int  ntaps)
static

Deprecated: use nuttall_cfd window instead.

◆ nuttall()

static std::vector<float> gr::fft::window::nuttall ( int  ntaps)
static

Build a Nuttall (or Blackman-Nuttall) window.

See: http://en.wikipedia.org/wiki/Window_function#Blackman.E2.80.93Nuttall_window

Parameters
ntapsNumber of coefficients in the window.

◆ nuttall_cfd()

static std::vector<float> gr::fft::window::nuttall_cfd ( int  ntaps)
static

Build a Nuttall continuous first derivative window.

See: http://en.wikipedia.org/wiki/Window_function#Nuttall_window.2C_continuous_first_derivative

Parameters
ntapsNumber of coefficients in the window.

◆ parzen()

static std::vector<float> gr::fft::window::parzen ( int  ntaps)
static

Build a Parzen (or de la Valle-Poussin) window.

See:

  A. D. Poularikas, "Handbook of Formulas and Tables for
  Signal Processing," Springer, Oct 28, 1998
Parameters
ntapsNumber of coefficients in the window.

◆ rectangular()

static std::vector<float> gr::fft::window::rectangular ( int  ntaps)
static

Build a rectangular window.

Taps are flat across the window.

Parameters
ntapsNumber of coefficients in the window.

◆ riemann()

static std::vector<float> gr::fft::window::riemann ( int  ntaps)
static

Build a Riemann window.

See:

  A. D. Poularikas, "Handbook of Formulas and Tables for
  Signal Processing," Springer, Oct 28, 1998
Parameters
ntapsNumber of coefficients in the window.

◆ welch()

static std::vector<float> gr::fft::window::welch ( int  ntaps)
static

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