summaryrefslogtreecommitdiff
path: root/gr-fft/lib/window.cc
diff options
context:
space:
mode:
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) {