#include <gnuradio/fft/window.h>
Public Types | |
enum | win_type { WIN_NONE = -1 , 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 per the SRS specification. 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 > | tukey (int ntaps, float alpha) |
Build a Tukey window. More... | |
static std::vector< float > | gaussian (int ntaps, float sigma) |
Build a Gaussian window using the equation. More... | |
static std::vector< float > | build (win_type type, int ntaps, double beta=6.76, const bool normalize=false) |
Build a window using gr::fft::win_type to index the type of window desired. More... | |
Enumerator | |
---|---|
WIN_NONE | don't use a window |
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 |
|
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.
ntaps | Number of coefficients in the window. |
|
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.
ntaps | Number of coefficients in the window. |
|
static |
Build Blackman window, variation 1.
|
static |
Build Blackman window, variation 2.
|
static |
Build Blackman window, variation 3.
|
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.
ntaps | Number of coefficients in the window. |
atten | Attenuation factor. Must be [61, 67, 74, 92]. See the above paper for details. |
|
static |
Deprecated: use blackman_nuttall window instead.
|
static |
Alias to the Nuttall window.
ntaps | Number of coefficients in the window. |
|
static |
Alias to gr::fft::window::blackman_harris.
|
static |
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. |
beta | Used only for building Kaiser windows. |
normalize | If true, return a window with unit power |
|
static |
Helper function to build cosine-based windows. 3-coefficient version.
|
static |
Helper function to build cosine-based windows. 4-coefficient version.
|
static |
Helper function to build cosine-based windows. 5-coefficient version.
|
static |
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. |
|
static |
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. |
|
static |
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. |
|
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.
ntaps | Number of coefficients in the window. |
|
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.
ntaps | Number of coefficients in the window. |
|
static |
Alias to build a Hann window.
ntaps | Number of coefficients in the window. |
|
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.
ntaps | Number of coefficients in the window. |
beta | Shaping parameter of the window. See the discussion in Oppenheim and Schafer. |
|
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.
type | The window::win_type enumeration of the window type. |
beta | Beta value only used for the Kaiser window. |
|
static |
Deprecated: use nuttall window instead.
|
static |
Deprecated: use nuttall_cfd window instead.
|
static |
Build a Nuttall (or Blackman-Nuttall) window.
See: http://en.wikipedia.org/wiki/Window_function#Blackman.E2.80.93Nuttall_window
ntaps | Number of coefficients in the window. |
|
static |
Build a Nuttall continuous first derivative window.
See: http://en.wikipedia.org/wiki/Window_function#Nuttall_window.2C_continuous_first_derivative
ntaps | Number of coefficients in the window. |
|
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
ntaps | Number of coefficients in the window. |
|
static |
Build a rectangular window.
Taps are flat across the window.
ntaps | Number of coefficients in the window. |
|
static |
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. |
|
static |
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. |
|
static |