From 487da72790363937c20f93500a1883ac0fc93582 Mon Sep 17 00:00:00 2001
From: Martin Braun <martin.braun@ettus.com>
Date: Thu, 13 Aug 2020 17:06:36 +0200
Subject: fft: window: Allow normalizing windows

In some applications, it is useful to generate windows that have unit
power. The boxcar window (rectangle) is always of unit power, but the
other windows are not, leading to apple-to-oranges comparisons, e.g.,
when switching between window types in a live spectrum estimation
application.
---
 gr-fft/python/fft/qa_window.py | 37 +++++++++++++++++++++++++++++++++++++
 1 file changed, 37 insertions(+)
 create mode 100644 gr-fft/python/fft/qa_window.py

(limited to 'gr-fft/python/fft/qa_window.py')

diff --git a/gr-fft/python/fft/qa_window.py b/gr-fft/python/fft/qa_window.py
new file mode 100644
index 0000000000..f5afd2640d
--- /dev/null
+++ b/gr-fft/python/fft/qa_window.py
@@ -0,0 +1,37 @@
+#!/usr/bin/env python3
+#
+# Copyright 2020 Free Software Foundation, Inc.
+#
+# This file is part of GNU Radio
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+#
+"""
+Unit tests for fft.window
+"""
+
+import numpy
+from gnuradio import gr_unittest
+from gnuradio import fft
+
+class test_window(gr_unittest.TestCase):
+    """
+    Unit tests for fft.window
+    """
+
+    def setUp(self):
+        pass
+
+    def tearDown(self):
+        pass
+
+    def test_normwin(self):
+        """
+        Verify window normalization
+        """
+        win = fft.window.build(fft.win_type.WIN_BLACKMAN_hARRIS, 21, normalize=True)
+        power = numpy.sum([x*x for x in win])/len(win)
+        self.assertAlmostEqual(power, 1.0)
+
+if __name__ == '__main__':
+    gr_unittest.run(test_window)
-- 
cgit v1.2.3