gr::fft::window
gnuradio/fft/window.h
win_type
gr::fft::window::win_type
WIN_NONE
= -1

don't use a window

WIN_HAMMING
= 0

Hamming window; max attenuation 53 dB.

WIN_HANN
= 1

Hann window; max attenuation 44 dB.

WIN_HANNING
= 1

alias to WIN_HANN

WIN_BLACKMAN
= 2

Blackman window; max attenuation 74 dB.

WIN_RECTANGULAR
= 3

Basic rectangular window; max attenuation 21 dB.

WIN_KAISER
= 4

Kaiser window; max attenuation see window::max_attenuation.

WIN_BLACKMAN_hARRIS
= 5

Blackman-harris window; max attenuation 92 dB.

WIN_BLACKMAN_HARRIS
= 5

alias to WIN_BLACKMAN_hARRIS for capitalization consistency

WIN_BARTLETT
= 6

Barlett (triangular) window; max attenuation 26 dB.

WIN_FLATTOP
= 7

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

WIN_NUTTALL
= 8

Nuttall window; max attenuation 114 dB.

WIN_BLACKMAN_NUTTALL
= 8

Nuttall window; max attenuation 114 dB.

WIN_NUTTALL_CFD
= 9

Nuttall continuous-first-derivative window; max attenuation 112 dB.

WIN_WELCH
= 10

Welch window; max attenuation 31 dB.

WIN_PARZEN
= 11

Parzen window; max attenuation 56 dB.

WIN_EXPONENTIAL
= 12

Exponential window; max attenuation see window::max_attenuation.

WIN_RIEMANN
= 13

Riemann window; max attenuation 39 dB.

WIN_GAUSSIAN
= 14

Gaussian window; max attenuation see window::max_attenuation.

WIN_TUKEY
= 15

Tukey window; max attenuation see window::max_attenuation.

double double gr::fft::window::INVALID_WIN_PARAM INVALID_WIN_PARAM gr::fft::window::INVALID_WIN_PARAM = -1
double static double gr::fft::window::max_attenuation (win_type type, double param=INVALID_WIN_PARAM) max_attenuation gr::fft::window::max_attenuation win_type type double param INVALID_WIN_PARAM

Given a window::win_type, this tells you the maximum attenuation (really the maximum approximation error) you can expect.

For most windows, this is a set value. For the Kaiser, Exponential, Gaussian, and Tukey windows, the attenuation is based on the value of a provided parameter.

For the Kaiser window 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.

Exponential attenuation is complicated to measure due to the irregular error ripple structure, but it ranges between 23 and 26 dB depending on the decay factor; 26 dB is a good bound.

The Gaussian window should not be used for window based filter construction; instead there is a dedicated gaussian filter construction function. There is no meaningful way to measure approximation error 'delta' as shown in Fig 7.23 of Oppenheim and Schafer (Discrete-Time Signal Processing, 3rd edition).

Tukey windows provide attenuation that varies non-linearily between Rectangular (21 dB) and Hann (44 dB) windows.

type

The window::win_type enumeration of the window type.

param

Parameter value used for Kaiser (beta), Exponential (d), Gaussian (sigma) and Tukey (alpha) window creation.

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

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

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

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

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

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

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

Build a rectangular window.

Taps are flat across the window.

ntaps

Number of coefficients in the window.

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

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.

ntaps

Number of coefficients in the window.

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

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.

ntaps

Number of coefficients in the window.

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

Alias to build a Hann window.

ntaps

Number of coefficients in the window.

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

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.

ntaps

Number of coefficients in the window.

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

Build Blackman window, variation 1.

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

Build Blackman window, variation 2.

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

Build Blackman window, variation 3.

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

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.

ntaps

Number of coefficients in the window.

atten

Attenuation factor. Must be [61, 67, 74, 92]. See the above paper for details.

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

Alias to gr::fft::window::blackman_harris.

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

Build a minimum 4-term Nuttall (or Blackman-Nuttall) window, referred to by Heinzel G. et al. as a Nuttall4c window.

See: A.H. Nuttall: 'Some windows with very good sidelobe behaviour', IEEE Trans. on Acoustics, Speech and Signal Processing, Vol ASSP-29, figure 15

See: 'Spectrum and spectral density estimation by the Discrete Fourier transform (DFT), including a comprehensive list of window functions and some new flat-top windows', February 15, 2002 https://holometer.fnal.gov/GH_FFT.pdf

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

ntaps

Number of coefficients in the window.

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

Alias to the Nuttall window.

ntaps

Number of coefficients in the window.

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

Build a Nuttall 4-term continuous first derivative window, referred to by Heinzel G. et al. as a Nuttall4b window.

See: A.H. Nuttall: 'Some windows with very good sidelobe behaviour', IEEE Trans. on Acoustics, Speech and Signal Processing, Vol ASSP-29, figure 12

See: 'Spectrum and spectral density estimation by the Discrete Fourier transform (DFT), including a comprehensive list of window functions and some new flat-top windows', February 15, 2002 https://holometer.fnal.gov/GH_FFT.pdf

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

ntaps

Number of coefficients in the window.

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

Build a flat top window per the SRS specification.

See: Stanford Research Systems, "Model SR785 Dynamic Signal Analyzer: Operating Manual and Programming Reference," 2017, pp 2-13

Note: there are many flat top windows, and this implementation is different from SciPY and Matlab which use the coefficients from D’Antona et al. "Digital Signal Processing for Measurement Systems" with the following cosine coefficients: [0.21557895, 0.41663158, 0.277263158, 0.083578947, 0.006947368]

ntaps

Number of coefficients in the window.

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

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.

ntaps

Number of coefficients in the window.

beta

Shaping parameter of the window. See the discussion in Oppenheim and Schafer.

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

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.

ntaps

Number of coefficients in the window.

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

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

ntaps

Number of coefficients in the window.

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

Build an exponential window with a given decay.

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

ntaps

Number of coefficients in the window.

d

Decay of `d` dB over half the window length.

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

Build a Riemann window.

See: A. D. Poularikas, "Handbook of Formulas and Tables for Signal Processing," Springer, Oct 28, 1998

ntaps

Number of coefficients in the window.

std::vector< float > static std::vector< float > gr::fft::window::tukey (int ntaps, float alpha) tukey gr::fft::window::tukey int ntaps float alpha

Build a Tukey window.

Bloomfield, P. Fourier Analysis of Time Series: An Introduction. New York: Wiley-Interscience, 2000, pp 69 (eqn 6.9)

ntaps

Number of coefficients in the window.

alpha

Shaping parameter for the Tukey window, an alpha of zero is equivalent to a rectangular window, an alpha of 1 is equivalent to Hann.

std::vector< float > static std::vector< float > gr::fft::window::gaussian (int ntaps, float sigma) gaussian gr::fft::window::gaussian int ntaps float sigma

Build a Gaussian window using the equation.

exp(-(1/2) * (n/sigma)^2)

ntaps

Number of coefficients in the window.

sigma

Standard deviation of gaussian distribution.

std::vector< float > static std::vector< float > gr::fft::window::build (win_type type, int ntaps, double param=INVALID_WIN_PARAM, const bool normalize=false) build gr::fft::window::build win_type type int ntaps double param INVALID_WIN_PARAM const bool normalize false

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

type

a gr::fft::win_type index for the type of window.

ntaps

Number of coefficients in the window.

param

Parameter value used for Kaiser (beta), Exponential (d), Gaussian (sigma) and Tukey (alpha) window creation.

normalize

If true, return a window with unit power

- gr::fft::window
  bartlett
- gr::fft::window
  blackman
- gr::fft::window
  blackman2
- gr::fft::window
  blackman3
- gr::fft::window
  blackman4
- gr::fft::window
  blackman_harris
- gr::fft::window
  blackman_nuttall
- gr::fft::window
  blackmanharris
- gr::fft::window
  build
- gr::fft::window
  coswindow
- gr::fft::window
  coswindow
- gr::fft::window
  coswindow
- gr::fft::window
  exponential
- gr::fft::window
  flattop
- gr::fft::window
  gaussian
- gr::fft::window
  hamming
- gr::fft::window
  hann
- gr::fft::window
  hanning
- gr::fft::window
  INVALID_WIN_PARAM
- gr::fft::window
  kaiser
- gr::fft::window
  max_attenuation
- gr::fft::window
  nuttall
- gr::fft::window
  nuttall_cfd
- gr::fft::window
  parzen
- gr::fft::window
  rectangular
- gr::fft::window
  riemann
- gr::fft::window
  tukey
- gr::fft::window
  welch
- gr::fft::window
  WIN_BARTLETT
- gr::fft::window
  WIN_BLACKMAN
- gr::fft::window
  WIN_BLACKMAN_HARRIS
- gr::fft::window
  WIN_BLACKMAN_hARRIS
- gr::fft::window
  WIN_BLACKMAN_NUTTALL
- gr::fft::window
  WIN_EXPONENTIAL
- gr::fft::window
  WIN_FLATTOP
- gr::fft::window
  WIN_GAUSSIAN
- gr::fft::window
  WIN_HAMMING
- gr::fft::window
  WIN_HANN
- gr::fft::window
  WIN_HANNING
- gr::fft::window
  WIN_KAISER
- gr::fft::window
  WIN_NONE
- gr::fft::window
  WIN_NUTTALL
- gr::fft::window
  WIN_NUTTALL_CFD
- gr::fft::window
  WIN_PARZEN
- gr::fft::window
  WIN_RECTANGULAR
- gr::fft::window
  WIN_RIEMANN
- gr::fft::window
  WIN_TUKEY
- gr::fft::window
  win_type
- gr::fft::window
  WIN_WELCH