⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 qa_sig_source.py

📁 这是用python语言写的一个数字广播的信号处理工具包。利用它
💻 PY
字号:
#!/usr/bin/env python## Copyright 2004 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 3, 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., 51 Franklin Street,# Boston, MA 02110-1301, USA.# from gnuradio import gr, gr_unittestimport mathclass test_sig_source (gr_unittest.TestCase):    def setUp (self):        self.fg = gr.flow_graph ()    def tearDown (self):        self.fg = None    def test_const_f (self):        fg = self.fg        expected_result = (1.5, 1.5, 1.5, 1.5, 1.5, 1.5, 1.5, 1.5, 1.5, 1.5)        src1 = gr.sig_source_f (1e6, gr.GR_CONST_WAVE, 0, 1.5)        op = gr.head (gr.sizeof_float, 10)        dst1 = gr.vector_sink_f ()        fg.connect (src1, op)        fg.connect (op, dst1)        fg.run ()        dst_data = dst1.data ()        self.assertEqual (expected_result, dst_data)        def test_const_i (self):        fg = self.fg        expected_result = (1, 1, 1, 1)        src1 = gr.sig_source_i (1e6, gr.GR_CONST_WAVE, 0, 1)        op = gr.head (gr.sizeof_int, 4)        dst1 = gr.vector_sink_i ()        fg.connect (src1, op)        fg.connect (op, dst1)        fg.run ()        dst_data = dst1.data ()        self.assertEqual (expected_result, dst_data)        def test_sine_f (self):        fg = self.fg        sqrt2 = math.sqrt(2) / 2        expected_result = (0, sqrt2, 1, sqrt2, 0, -sqrt2, -1, -sqrt2, 0)        src1 = gr.sig_source_f (8, gr.GR_SIN_WAVE, 1.0, 1.0)        op = gr.head (gr.sizeof_float, 9)        dst1 = gr.vector_sink_f ()        fg.connect (src1, op)        fg.connect (op, dst1)        fg.run ()        dst_data = dst1.data ()        self.assertFloatTuplesAlmostEqual (expected_result, dst_data, 5)    def test_cosine_f (self):        fg = self.fg        sqrt2 = math.sqrt(2) / 2        expected_result = (1, sqrt2, 0, -sqrt2, -1, -sqrt2, 0, sqrt2, 1)        src1 = gr.sig_source_f (8, gr.GR_COS_WAVE, 1.0, 1.0)        op = gr.head (gr.sizeof_float, 9)        dst1 = gr.vector_sink_f ()        fg.connect (src1, op)        fg.connect (op, dst1)        fg.run ()        dst_data = dst1.data ()        self.assertFloatTuplesAlmostEqual (expected_result, dst_data, 5)            def test_sqr_c (self):        fg = self.fg						#arg6 is a bit before -PI/2        expected_result = (1j, 1j, 0, 0, 1, 1, 1+0j, 1+1j, 1j)        src1 = gr.sig_source_c (8, gr.GR_SQR_WAVE, 1.0, 1.0)        op = gr.head (gr.sizeof_gr_complex, 9)        dst1 = gr.vector_sink_c ()        fg.connect (src1, op)        fg.connect (op, dst1)        fg.run ()        dst_data = dst1.data ()        self.assertEqual (expected_result, dst_data)            def test_tri_c (self):        fg = self.fg        expected_result = (1+.5j, .75+.75j, .5+1j, .25+.75j, 0+.5j, .25+.25j, .5+0j, .75+.25j, 1+.5j)        src1 = gr.sig_source_c (8, gr.GR_TRI_WAVE, 1.0, 1.0)        op = gr.head (gr.sizeof_gr_complex, 9)        dst1 = gr.vector_sink_c ()        fg.connect (src1, op)        fg.connect (op, dst1)        fg.run ()        dst_data = dst1.data ()        self.assertComplexTuplesAlmostEqual (expected_result, dst_data, 5)            def test_saw_c (self):        fg = self.fg        expected_result = (.5+.25j, .625+.375j, .75+.5j, .875+.625j, 0+.75j, .125+.875j, .25+1j, .375+.125j, .5+.25j)        src1 = gr.sig_source_c (8, gr.GR_SAW_WAVE, 1.0, 1.0)        op = gr.head (gr.sizeof_gr_complex, 9)        dst1 = gr.vector_sink_c ()        fg.connect (src1, op)        fg.connect (op, dst1)        fg.run ()        dst_data = dst1.data ()        self.assertComplexTuplesAlmostEqual (expected_result, dst_data, 5)        def test_sqr_f (self):        fg = self.fg        expected_result = (0, 0, 0, 0, 1, 1, 1, 1, 0)        src1 = gr.sig_source_f (8, gr.GR_SQR_WAVE, 1.0, 1.0)        op = gr.head (gr.sizeof_float, 9)        dst1 = gr.vector_sink_f ()        fg.connect (src1, op)        fg.connect (op, dst1)        fg.run ()        dst_data = dst1.data ()        self.assertEqual (expected_result, dst_data)            def test_tri_f (self):        fg = self.fg        expected_result = (1, .75, .5, .25, 0, .25, .5, .75, 1)        src1 = gr.sig_source_f (8, gr.GR_TRI_WAVE, 1.0, 1.0)        op = gr.head (gr.sizeof_float, 9)        dst1 = gr.vector_sink_f ()        fg.connect (src1, op)        fg.connect (op, dst1)        fg.run ()        dst_data = dst1.data ()        self.assertFloatTuplesAlmostEqual (expected_result, dst_data, 5)            def test_saw_f (self):        fg = self.fg        expected_result = (.5, .625, .75, .875, 0, .125, .25, .375, .5)        src1 = gr.sig_source_f (8, gr.GR_SAW_WAVE, 1.0, 1.0)        op = gr.head (gr.sizeof_float, 9)        dst1 = gr.vector_sink_f ()        fg.connect (src1, op)        fg.connect (op, dst1)        fg.run ()        dst_data = dst1.data ()        self.assertFloatTuplesAlmostEqual (expected_result, dst_data, 5)if __name__ == '__main__':    gr_unittest.main ()

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -