diff options
author | Martin Braun <martin.braun@ettus.com> | 2020-08-13 17:06:36 +0200 |
---|---|---|
committer | Martin Braun <martin@gnuradio.org> | 2020-08-14 04:11:26 -0700 |
commit | 487da72790363937c20f93500a1883ac0fc93582 (patch) | |
tree | 5db582d67942a606458d573a7181f0b7d8ccb7c1 /gr-fft/python/fft | |
parent | 3adb522b0ddf6736605beea797016353a1d4a2b8 (diff) |
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.
Diffstat (limited to 'gr-fft/python/fft')
-rw-r--r-- | gr-fft/python/fft/bindings/window_python.cc | 5 | ||||
-rw-r--r-- | gr-fft/python/fft/qa_window.py | 37 |
2 files changed, 40 insertions, 2 deletions
diff --git a/gr-fft/python/fft/bindings/window_python.cc b/gr-fft/python/fft/bindings/window_python.cc index 51dd7200d1..e04a6c59df 100644 --- a/gr-fft/python/fft/bindings/window_python.cc +++ b/gr-fft/python/fft/bindings/window_python.cc @@ -13,8 +13,8 @@ /* If manual edits are made, the following tags should be modified accordingly. */ /* BINDTOOL_GEN_AUTOMATIC(0) */ /* BINDTOOL_USE_PYGCCXML(0) */ -/* BINDTOOL_HEADER_FILE(window.h) */ -/* BINDTOOL_HEADER_FILE_HASH(b55c3b96105267729782fc5262efa28a) */ +/* BINDTOOL_HEADER_FILE(window.h) */ +/* BINDTOOL_HEADER_FILE_HASH(22de6d8875628eec777952b4902a09e9) */ /***********************************************************************************/ #include <pybind11/complex.h> @@ -176,6 +176,7 @@ void bind_window(py::module& m) py::arg("type"), py::arg("ntaps"), py::arg("beta") = 6.76, + py::arg("normalize") = false, D(window, build)) ; 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) |