diff options
author | Jacob Gilbert <mrjacobagilbert@gmail.com> | 2020-04-25 20:56:08 -0600 |
---|---|---|
committer | mormj <34754695+mormj@users.noreply.github.com> | 2020-04-26 11:17:00 -0400 |
commit | 9e678e4b7d0c8d914470d6be22413df27e5badb0 (patch) | |
tree | 9977cf2cb477b5a16109c4e0236acbf42ecd2071 /gr-fft/lib/window.cc | |
parent | 76a9d742f26621291eaa6956b8769f991c50c459 (diff) |
fft: added gaussian window
and updated the docs for gaussian and tukey windows
Diffstat (limited to 'gr-fft/lib/window.cc')
-rw-r--r-- | gr-fft/lib/window.cc | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/gr-fft/lib/window.cc b/gr-fft/lib/window.cc index 8b0a07f430..430b435bd4 100644 --- a/gr-fft/lib/window.cc +++ b/gr-fft/lib/window.cc @@ -339,6 +339,22 @@ std::vector<float> window::tukey(int ntaps, float a) return taps; } +std::vector<float> window::gaussian(int ntaps, float sigma) +{ + if (sigma <= 0) + throw std::out_of_range("window::gaussian: sigma must be > 0"); + + float a = 2 * sigma * sigma; + double m1 = midm1(ntaps); + std::vector<float> taps(ntaps); + for (int i = 0; i < midn(ntaps); i++) { + float N = (i - m1); + taps[i] = exp(-(N * N / a)); + taps[ntaps - 1 - i] = taps[i]; + } + return taps; +} + std::vector<float> window::build(win_type type, int ntaps, double beta) { switch (type) { |