summaryrefslogtreecommitdiff
path: root/gnuradio-examples/python/usrp/test_dft_synth.py
diff options
context:
space:
mode:
authorjcorgan2008-01-19 19:16:31 +0000
committerjcorgan2008-01-19 19:16:31 +0000
commitd830a4547256be3096db83118f6e9ffe299f8ecf (patch)
treeaff290e911ce0350c9e56f6197538bed2d9dd496 /gnuradio-examples/python/usrp/test_dft_synth.py
parent0e47d4d37249d01d3b15684b95c941731c0505e4 (diff)
downloadgnuradio-d830a4547256be3096db83118f6e9ffe299f8ecf.tar.gz
gnuradio-d830a4547256be3096db83118f6e9ffe299f8ecf.tar.bz2
gnuradio-d830a4547256be3096db83118f6e9ffe299f8ecf.zip
Fixes ticket:229. Fixed code in synthesis filterbank, restored test programs from limbo and upgraded to use blks2.
git-svn-id: http://gnuradio.org/svn/gnuradio/trunk@7476 221aa14e-8319-0410-a670-987f0aec2ac5
Diffstat (limited to 'gnuradio-examples/python/usrp/test_dft_synth.py')
-rwxr-xr-xgnuradio-examples/python/usrp/test_dft_synth.py78
1 files changed, 78 insertions, 0 deletions
diff --git a/gnuradio-examples/python/usrp/test_dft_synth.py b/gnuradio-examples/python/usrp/test_dft_synth.py
new file mode 100755
index 000000000..99b1c4923
--- /dev/null
+++ b/gnuradio-examples/python/usrp/test_dft_synth.py
@@ -0,0 +1,78 @@
+#!/usr/bin/env python
+
+from gnuradio import gr, gru, blks2
+from gnuradio.wxgui import stdgui2, fftsink2
+from gnuradio.eng_option import eng_option
+from optparse import OptionParser
+import wx
+import random
+
+
+def make_random_complex_tuple(L, gain=1):
+ result = []
+ for x in range(L):
+ result.append(gain * complex(random.gauss(0, 1),random.gauss(0, 1)))
+
+ return tuple(result)
+
+def random_noise_c(gain=1):
+ src = gr.vector_source_c(make_random_complex_tuple(32*1024, gain), True)
+ return src
+
+
+class test_graph (stdgui2.std_top_block):
+ def __init__(self, frame, panel, vbox, argv):
+ stdgui2.std_top_block.__init__(self, frame, panel, vbox, argv)
+
+ parser = OptionParser (option_class=eng_option)
+ (options, args) = parser.parse_args ()
+
+ sample_rate = 16e6
+ mpoints = 16
+ ampl = 1000
+
+ enable = mpoints/2 * [1, 0]
+ enable[0] = 1
+
+ taps = gr.firdes.low_pass(1, # gain
+ 1, # rate
+ 1.0/mpoints * 0.4, # cutoff
+ 1.0/mpoints * 0.1, # trans width
+ gr.firdes.WIN_HANN)
+
+ synth = blks2.synthesis_filterbank(mpoints, taps)
+
+ null_source = gr.null_source(gr.sizeof_gr_complex)
+
+ if 1:
+ for i in range(mpoints):
+ s = gr.sig_source_c(sample_rate/mpoints, gr.GR_SIN_WAVE,
+ 300e3, ampl * enable[i], 0)
+ self.connect(s, (synth, i))
+
+ else:
+ for i in range(mpoints):
+ if i == 1:
+ #s = gr.sig_source_c(sample_rate/mpoints, gr.GR_SIN_WAVE,
+ # 300e3, ampl * enable[i], 0)
+ s = random_noise_c(ampl)
+ self.connect(s, (synth, i))
+ else:
+ self.connect(null_source, (synth, i))
+
+
+ # We add these throttle blocks so that this demo doesn't
+ # suck down all the CPU available. Normally you wouldn't use these.
+ thr = gr.throttle(gr.sizeof_gr_complex, sample_rate)
+ fft = fftsink2.fft_sink_c(frame, fft_size=1024,sample_rate=sample_rate)
+ vbox.Add(fft.win, 1, wx.EXPAND)
+
+ self.connect(synth, thr, fft)
+
+
+def main ():
+ app = stdgui2.stdapp (test_graph, "Test DFT filterbank")
+ app.MainLoop ()
+
+if __name__ == '__main__':
+ main ()