Statistics
| Branch: | Tag: | Revision:

root / gnuradio-core / src / python / gnuradio / gr / qa_iir.py @ cd1f3306

History | View | Annotate | Download (5.3 kB)

1 5d69a524 jcorgan
#!/usr/bin/env python
2 5d69a524 jcorgan
#
3 3c443c0b jcorgan
# Copyright 2004,2007 Free Software Foundation, Inc.
4 5d69a524 jcorgan
# 
5 5d69a524 jcorgan
# This file is part of GNU Radio
6 5d69a524 jcorgan
# 
7 5d69a524 jcorgan
# GNU Radio is free software; you can redistribute it and/or modify
8 5d69a524 jcorgan
# it under the terms of the GNU General Public License as published by
9 937b719d eb
# the Free Software Foundation; either version 3, or (at your option)
10 5d69a524 jcorgan
# any later version.
11 5d69a524 jcorgan
# 
12 5d69a524 jcorgan
# GNU Radio is distributed in the hope that it will be useful,
13 5d69a524 jcorgan
# but WITHOUT ANY WARRANTY; without even the implied warranty of
14 5d69a524 jcorgan
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15 5d69a524 jcorgan
# GNU General Public License for more details.
16 5d69a524 jcorgan
# 
17 5d69a524 jcorgan
# You should have received a copy of the GNU General Public License
18 5d69a524 jcorgan
# along with GNU Radio; see the file COPYING.  If not, write to
19 86f5c924 eb
# the Free Software Foundation, Inc., 51 Franklin Street,
20 86f5c924 eb
# Boston, MA 02110-1301, USA.
21 5d69a524 jcorgan
# 
22 5d69a524 jcorgan
23 5d69a524 jcorgan
from gnuradio import gr, gr_unittest
24 5d69a524 jcorgan
25 5d69a524 jcorgan
class test_iir (gr_unittest.TestCase):
26 5d69a524 jcorgan
27 5d69a524 jcorgan
    def setUp (self):
28 3c443c0b jcorgan
        self.tb = gr.top_block ()
29 5d69a524 jcorgan
30 5d69a524 jcorgan
    def tearDown (self):
31 3c443c0b jcorgan
        self.tb = None
32 5d69a524 jcorgan
33 5d69a524 jcorgan
    def test_iir_direct_001 (self):
34 5d69a524 jcorgan
        src_data = (1, 2, 3, 4, 5, 6, 7, 8)
35 5d69a524 jcorgan
        fftaps = ()
36 5d69a524 jcorgan
        fbtaps = ()
37 5d69a524 jcorgan
        expected_result = (0, 0, 0, 0, 0, 0, 0, 0)
38 5d69a524 jcorgan
        src = gr.vector_source_f (src_data)
39 5d69a524 jcorgan
        op = gr.iir_filter_ffd (fftaps, fbtaps)
40 5d69a524 jcorgan
        dst = gr.vector_sink_f ()
41 3c443c0b jcorgan
        self.tb.connect (src, op)
42 3c443c0b jcorgan
        self.tb.connect (op, dst)
43 3c443c0b jcorgan
        self.tb.run ()
44 5d69a524 jcorgan
        result_data = dst.data ()
45 5d69a524 jcorgan
        self.assertFloatTuplesAlmostEqual (expected_result, result_data)
46 5d69a524 jcorgan
47 5d69a524 jcorgan
    def test_iir_direct_002 (self):
48 5d69a524 jcorgan
        src_data = (1, 2, 3, 4, 5, 6, 7, 8)
49 5d69a524 jcorgan
        fftaps = (2,)
50 5d69a524 jcorgan
        fbtaps = (0,)
51 5d69a524 jcorgan
        expected_result = (2, 4, 6, 8, 10, 12, 14, 16)
52 5d69a524 jcorgan
        src = gr.vector_source_f (src_data)
53 5d69a524 jcorgan
        op = gr.iir_filter_ffd (fftaps, fbtaps)
54 5d69a524 jcorgan
        dst = gr.vector_sink_f ()
55 3c443c0b jcorgan
        self.tb.connect (src, op)
56 3c443c0b jcorgan
        self.tb.connect (op, dst)
57 3c443c0b jcorgan
        self.tb.run ()
58 5d69a524 jcorgan
        result_data = dst.data ()
59 5d69a524 jcorgan
        self.assertFloatTuplesAlmostEqual (expected_result, result_data)
60 5d69a524 jcorgan
61 5d69a524 jcorgan
    def test_iir_direct_003 (self):
62 5d69a524 jcorgan
        src_data = (1, 2, 3, 4, 5, 6, 7, 8)
63 5d69a524 jcorgan
        fftaps = (2, 11)
64 5d69a524 jcorgan
        fbtaps = (0,  0)
65 5d69a524 jcorgan
        expected_result = (2, 15, 28, 41, 54, 67, 80, 93)
66 5d69a524 jcorgan
        src = gr.vector_source_f (src_data)
67 5d69a524 jcorgan
        op = gr.iir_filter_ffd (fftaps, fbtaps)
68 5d69a524 jcorgan
        dst = gr.vector_sink_f ()
69 3c443c0b jcorgan
        self.tb.connect (src, op)
70 3c443c0b jcorgan
        self.tb.connect (op, dst)
71 3c443c0b jcorgan
        self.tb.run ()
72 5d69a524 jcorgan
        result_data = dst.data ()
73 5d69a524 jcorgan
        self.assertFloatTuplesAlmostEqual (expected_result, result_data)
74 5d69a524 jcorgan
75 5d69a524 jcorgan
    def test_iir_direct_004 (self):
76 5d69a524 jcorgan
        src_data = (1, 2, 3, 4, 5, 6, 7, 8)
77 5d69a524 jcorgan
        fftaps = (2, 11)
78 5d69a524 jcorgan
        fbtaps = (0,  -1)
79 5d69a524 jcorgan
        expected_result = (2, 13, 15, 26, 28, 39, 41, 52)
80 5d69a524 jcorgan
        src = gr.vector_source_f (src_data)
81 5d69a524 jcorgan
        op = gr.iir_filter_ffd (fftaps, fbtaps)
82 5d69a524 jcorgan
        dst = gr.vector_sink_f ()
83 3c443c0b jcorgan
        self.tb.connect (src, op)
84 3c443c0b jcorgan
        self.tb.connect (op, dst)
85 3c443c0b jcorgan
        self.tb.run ()
86 5d69a524 jcorgan
        result_data = dst.data ()
87 5d69a524 jcorgan
        self.assertFloatTuplesAlmostEqual (expected_result, result_data)
88 5d69a524 jcorgan
89 5d69a524 jcorgan
    def test_iir_direct_005 (self):
90 5d69a524 jcorgan
        src_data = (1, 2, 3, 4, 5, 6, 7, 8)
91 5d69a524 jcorgan
        fftaps = (2, 11,  0)
92 5d69a524 jcorgan
        fbtaps = (0,  -1, 3)
93 5d69a524 jcorgan
        expected_result = (2, 13, 21, 59, 58, 186, 68, 583)
94 5d69a524 jcorgan
        src = gr.vector_source_f (src_data)
95 5d69a524 jcorgan
        op = gr.iir_filter_ffd (fftaps, fbtaps)
96 5d69a524 jcorgan
        dst = gr.vector_sink_f ()
97 3c443c0b jcorgan
        self.tb.connect (src, op)
98 3c443c0b jcorgan
        self.tb.connect (op, dst)
99 3c443c0b jcorgan
        self.tb.run ()
100 5d69a524 jcorgan
        result_data = dst.data ()
101 5d69a524 jcorgan
        self.assertFloatTuplesAlmostEqual (expected_result, result_data)
102 5d69a524 jcorgan
103 5d69a524 jcorgan
    def test_iir_direct_006 (self):
104 5d69a524 jcorgan
        src_data = (1, 2, 3, 4, 5, 6, 7, 8)
105 5d69a524 jcorgan
        expected_result = (2, 13, 21, 59, 58, 186, 68, 583)
106 5d69a524 jcorgan
        fftaps = (2, 1)
107 5d69a524 jcorgan
        fbtaps = (0, -1)
108 5d69a524 jcorgan
        src = gr.vector_source_f (src_data)
109 5d69a524 jcorgan
        op = gr.iir_filter_ffd (fftaps, fbtaps)
110 5d69a524 jcorgan
        fftaps = (2, 11,  0)
111 5d69a524 jcorgan
        fbtaps = (0,  -1, 3)
112 5d69a524 jcorgan
        op.set_taps (fftaps, fbtaps)
113 5d69a524 jcorgan
        dst = gr.vector_sink_f ()
114 3c443c0b jcorgan
        self.tb.connect (src, op)
115 3c443c0b jcorgan
        self.tb.connect (op, dst)
116 3c443c0b jcorgan
        self.tb.run ()
117 5d69a524 jcorgan
        result_data = dst.data ()
118 5d69a524 jcorgan
        self.assertFloatTuplesAlmostEqual (expected_result, result_data)
119 5d69a524 jcorgan
120 71647e09 n4hy
    def test_iir_direct_007 (self):
121 71647e09 n4hy
        src_data = (1, 2, 3, 4, 5, 6, 7, 8)
122 71647e09 n4hy
        expected_result = (2,2,5,5,8,8,11,11)
123 5d69a524 jcorgan
        fftaps = (2, 1)
124 5d69a524 jcorgan
        fbtaps = (0, -1)
125 71647e09 n4hy
        src = gr.vector_source_f (src_data)
126 5d69a524 jcorgan
        op = gr.iir_filter_ffd (fftaps, fbtaps)
127 71647e09 n4hy
        fftaps = (2,0,1)
128 71647e09 n4hy
        fbtaps = (0, -1)
129 71647e09 n4hy
        op.set_taps (fftaps, fbtaps)
130 71647e09 n4hy
        dst = gr.vector_sink_f ()
131 3c443c0b jcorgan
        self.tb.connect (src, op)
132 3c443c0b jcorgan
        self.tb.connect (op, dst)
133 3c443c0b jcorgan
        self.tb.run ()
134 71647e09 n4hy
        result_data = dst.data ()
135 71647e09 n4hy
        self.assertFloatTuplesAlmostEqual (expected_result, result_data)
136 71647e09 n4hy
        
137 71647e09 n4hy
    def test_iir_direct_008 (self):
138 71647e09 n4hy
        src_data = (1, 2, 3, 4, 5, 6, 7, 8)
139 71647e09 n4hy
        expected_result = (2,4,4,10,18,14,26,56)
140 71647e09 n4hy
        fftaps = (2,)
141 71647e09 n4hy
        fbtaps = (0, 1)
142 71647e09 n4hy
        src = gr.vector_source_f (src_data)
143 71647e09 n4hy
        op = gr.iir_filter_ffd (fftaps, fbtaps)
144 71647e09 n4hy
        fftaps_data = (1)
145 71647e09 n4hy
        fbtaps = (0,0, -1,3)
146 71647e09 n4hy
        op.set_taps (fftaps, fbtaps)
147 71647e09 n4hy
        dst = gr.vector_sink_f ()
148 3c443c0b jcorgan
        self.tb.connect (src, op)
149 3c443c0b jcorgan
        self.tb.connect (op, dst)
150 3c443c0b jcorgan
        self.tb.run ()
151 71647e09 n4hy
        result_data = dst.data ()
152 71647e09 n4hy
        self.assertFloatTuplesAlmostEqual (expected_result, result_data)
153 71647e09 n4hy
        
154 71647e09 n4hy
        
155 71647e09 n4hy
156 5d69a524 jcorgan
157 5d69a524 jcorgan
if __name__ == '__main__':
158 5d69a524 jcorgan
    gr_unittest.main ()
159 5d69a524 jcorgan