diff options
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) { |