commit-gnuradio
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Commit-gnuradio] gnuradio-core/src/python/gnuradio/gr qa_goertze...


From: Johnathan Corgan
Subject: [Commit-gnuradio] gnuradio-core/src/python/gnuradio/gr qa_goertze...
Date: Mon, 03 Jul 2006 18:44:24 +0000

CVSROOT:        /sources/gnuradio
Module name:    gnuradio-core
Changes by:     Johnathan Corgan <jcorgan>      06/07/03 18:44:24

Added files:
        src/python/gnuradio/gr: qa_goertzel.py 

Log message:
        Added basic gr.goertzel_fc QA test script.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnuradio-core/src/python/gnuradio/gr/qa_goertzel.py?cvsroot=gnuradio&rev=1.1

Patches:
Index: qa_goertzel.py
===================================================================
RCS file: qa_goertzel.py
diff -N qa_goertzel.py
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ qa_goertzel.py      3 Jul 2006 18:44:24 -0000       1.1
@@ -0,0 +1,64 @@
+#!/usr/bin/env python
+#
+# Copyright 2006 Free Software Foundation, Inc.
+# 
+# This file is part of GNU Radio
+# 
+# GNU Radio is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+# 
+# GNU Radio is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+# 
+# You should have received a copy of the GNU General Public License
+# along with GNU Radio; see the file COPYING.  If not, write to
+# the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+# Boston, MA 02111-1307, USA.
+# 
+
+from gnuradio import gr, gr_unittest
+from math import pi, cos
+
+class test_goertzel(gr_unittest.TestCase):
+
+    def setUp(self):
+        self.fg = gr.flow_graph()
+
+    def tearDown(self):
+        self.fg = None
+
+    def make_tone_data(self, rate, freq):
+        return [cos(2*pi*x*freq/rate) for x in range(rate)]
+
+    def transform(self, src_data, rate, freq):
+       src = gr.vector_source_f(src_data, False)
+        dft = gr.goertzel_fc(rate, rate, freq)
+       dst = gr.vector_sink_c()
+       self.fg.connect(src, dft, dst)
+       self.fg.run()
+       return dst.data()       
+
+    def test_001(self): # Measure single tone magnitude
+       rate = 8000
+       freq = 100
+       bin = freq
+       src_data = self.make_tone_data(rate, freq)
+       expected_result = 0.5
+       actual_result = abs(self.transform(src_data, rate, bin)[0])
+       self.assertAlmostEqual(expected_result, actual_result, places=5)
+
+    def test_002(self): # Measure off frequency magnitude
+       rate = 8000
+       freq = 100
+       bin = freq/2
+       src_data = self.make_tone_data(rate, freq)
+       expected_result = 0.0
+       actual_result = abs(self.transform(src_data, rate, bin)[0])
+       self.assertAlmostEqual(expected_result, actual_result, places=5)
+
+if __name__ == '__main__':
+    gr_unittest.main()




reply via email to

[Prev in Thread] Current Thread [Next in Thread]