diff options
author | Tom Rondeau | 2010-12-28 12:55:43 -0500 |
---|---|---|
committer | Tom Rondeau | 2010-12-28 12:56:28 -0500 |
commit | 47c11429a1f2afa2d46419d3fedff60403e4ea12 (patch) | |
tree | 119578717bc873b07145af68cdde81d744677173 | |
parent | 3751671d1b596113e441ca326280bdcc94fdcc6f (diff) | |
download | gnuradio-47c11429a1f2afa2d46419d3fedff60403e4ea12.tar.gz gnuradio-47c11429a1f2afa2d46419d3fedff60403e4ea12.tar.bz2 gnuradio-47c11429a1f2afa2d46419d3fedff60403e4ea12.zip |
Allowing PFB decimator to be called without specifying the taps; autogen taps inside hierblock.
-rw-r--r-- | gnuradio-core/src/python/gnuradio/blks2impl/pfb_decimator.py | 22 |
1 files changed, 19 insertions, 3 deletions
diff --git a/gnuradio-core/src/python/gnuradio/blks2impl/pfb_decimator.py b/gnuradio-core/src/python/gnuradio/blks2impl/pfb_decimator.py index 176d0473e..103980da0 100644 --- a/gnuradio-core/src/python/gnuradio/blks2impl/pfb_decimator.py +++ b/gnuradio-core/src/python/gnuradio/blks2impl/pfb_decimator.py @@ -20,7 +20,7 @@ # Boston, MA 02110-1301, USA. # -from gnuradio import gr +from gnuradio import gr, optfir class pfb_decimator_ccf(gr.hier_block2): ''' @@ -29,15 +29,31 @@ class pfb_decimator_ccf(gr.hier_block2): This simplifies the interface by allowing a single input stream to connect to this block. It will then output a stream that is the decimated output stream. ''' - def __init__(self, decim, taps, channel=0): + def __init__(self, decim, taps=None, channel=0, atten=100): gr.hier_block2.__init__(self, "pfb_decimator_ccf", gr.io_signature(1, 1, gr.sizeof_gr_complex), # Input signature gr.io_signature(1, 1, gr.sizeof_gr_complex)) # Output signature self._decim = decim - self._taps = taps self._channel = channel + if taps is not None: + self._taps = taps + else: + # Create a filter that covers the full bandwidth of the input signal + bw = 0.4 + tb = 0.2 + ripple = 0.1 + made = False + while not made: + try: + self._taps = optfir.low_pass(1, self._decim, bw, bw+tb, ripple, atten) + made = True + except RuntimeError: + ripple += 0.01 + made = False + print("Warning: set ripple to %.4f dB. If this is a problem, adjust the attenuation or create your own filter taps." % (ripple)) + self.s2ss = gr.stream_to_streams(gr.sizeof_gr_complex, self._decim) self.pfb = gr.pfb_decimator_ccf(self._decim, self._taps, self._channel) |