diff options
author | Tom Rondeau | 2010-12-28 13:00:56 -0500 |
---|---|---|
committer | Tom Rondeau | 2010-12-28 13:00:56 -0500 |
commit | 3f32342fc5c82d53e7c94afbccb01d38280db733 (patch) | |
tree | 15f23af7c4c8954e01dfb964267543c3dcfd4154 | |
parent | 47c11429a1f2afa2d46419d3fedff60403e4ea12 (diff) | |
download | gnuradio-3f32342fc5c82d53e7c94afbccb01d38280db733.tar.gz gnuradio-3f32342fc5c82d53e7c94afbccb01d38280db733.tar.bz2 gnuradio-3f32342fc5c82d53e7c94afbccb01d38280db733.zip |
Allowing PFB interpolator to be called without specifying the taps; autogen taps inside hierblock.
-rw-r--r-- | gnuradio-core/src/python/gnuradio/blks2impl/pfb_interpolator.py | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/gnuradio-core/src/python/gnuradio/blks2impl/pfb_interpolator.py b/gnuradio-core/src/python/gnuradio/blks2impl/pfb_interpolator.py index db2944042..a210e3de8 100644 --- a/gnuradio-core/src/python/gnuradio/blks2impl/pfb_interpolator.py +++ b/gnuradio-core/src/python/gnuradio/blks2impl/pfb_interpolator.py @@ -20,7 +20,7 @@ # Boston, MA 02110-1301, USA. # -from gnuradio import gr +from gnuradio import gr, optfir class pfb_interpolator_ccf(gr.hier_block2): ''' @@ -31,7 +31,7 @@ class pfb_interpolator_ccf(gr.hier_block2): streams. This block is provided to be consistent with the interface to the other PFB block. ''' - def __init__(self, interp, taps): + def __init__(self, interp, taps=None, atten=100): gr.hier_block2.__init__(self, "pfb_interpolator_ccf", gr.io_signature(1, 1, gr.sizeof_gr_complex), # Input signature gr.io_signature(1, 1, gr.sizeof_gr_complex)) # Output signature @@ -39,6 +39,23 @@ class pfb_interpolator_ccf(gr.hier_block2): self._interp = interp self._taps = taps + 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(self._interp, self._interp, 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.pfb = gr.pfb_interpolator_ccf(self._interp, self._taps) self.connect(self, self.pfb) |