summaryrefslogtreecommitdiff
path: root/gr-fft/lib/window.cc
diff options
context:
space:
mode:
authorJacob Gilbert <mrjacobagilbert@gmail.com>2020-04-25 20:56:08 -0600
committermormj <34754695+mormj@users.noreply.github.com>2020-04-26 11:17:00 -0400
commit9e678e4b7d0c8d914470d6be22413df27e5badb0 (patch)
tree9977cf2cb477b5a16109c4e0236acbf42ecd2071 /gr-fft/lib/window.cc
parent76a9d742f26621291eaa6956b8769f991c50c459 (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.cc16
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) {