def __init__(self, vlen, channel_block, delay): gr.hier_block2.__init__( self, 'apply_channel_to_vect', gr.io_signature(1, 1, gr.sizeof_gr_complex * vlen), gr.io_signature(1, 1, gr.sizeof_gr_complex * vlen)) self.vlen = vlen self.channel_block = channel_block self.delay = delay pad_len = self.vlen + self.delay * 2 if (delay > 0): self.padding = gr.vector_source_c((0, ) * (delay * 2), True, delay * 2) self.pad_cat = mlse.vector_concat_vv( vlen * gr.sizeof_gr_complex, gr.sizeof_gr_complex * 2 * delay) self.connect(self, self.pad_cat) self.connect(self.padding, (self.pad_cat, 1)) else: self.pad_cat = self self.tostream = gr.vector_to_stream(gr.sizeof_gr_complex, pad_len) self.connect(self.pad_cat, self.tostream) # connect channel self.connect(self.tostream, self.channel_block) self.tovector = gr.stream_to_vector(gr.sizeof_gr_complex, pad_len) self.connect(self.channel_block, self.tovector) # cut out the proper part self.trim = mlse.vector_slice_vv(gr.sizeof_gr_complex, pad_len, delay, vlen) self.connect(self.tovector, self.trim, self)
def __init__(self, vlen, channel_block, delay): gr.hier_block2.__init__(self, 'apply_channel_to_vect', gr.io_signature(1, 1, gr.sizeof_gr_complex * vlen), gr.io_signature(1, 1, gr.sizeof_gr_complex * vlen)) self.vlen=vlen self.channel_block = channel_block self.delay = delay pad_len = self.vlen + self.delay*2 if(delay>0): self.padding = gr.vector_source_c((0,)*(delay*2),True,delay*2) self.pad_cat = mlse.vector_concat_vv(vlen*gr.sizeof_gr_complex,gr.sizeof_gr_complex*2*delay) self.connect(self, self.pad_cat) self.connect(self.padding, (self.pad_cat,1)) else: self.pad_cat = self self.tostream = gr.vector_to_stream(gr.sizeof_gr_complex, pad_len) self.connect(self.pad_cat, self.tostream) # connect channel self.connect(self.tostream, self.channel_block) self.tovector = gr.stream_to_vector(gr.sizeof_gr_complex, pad_len) self.connect(self.channel_block, self.tovector) # cut out the proper part self.trim = mlse.vector_slice_vv( gr.sizeof_gr_complex, pad_len, delay, vlen) self.connect(self.tovector, self.trim, self)
def test_001_vector_slice_vv (self): """tests negative offsets""" src=gr.vector_source_f((1,2,3,4,5,6,7,8,9,10,11,12,13,14,15)) expected_result = (0,1,2,0,6,7,0,11,12) dst=gr.vector_sink_f() reor1=gr.stream_to_vector(gr.sizeof_float, 5) reor2=gr.vector_to_stream(gr.sizeof_float, 3) slicer=mlse_swig.vector_slice_vv(gr.sizeof_float, 5, -1, 3) self.tb.connect(src,reor1,slicer,reor2,dst) self.tb.run() self.tb.run () result_data = dst.data () self.assertFloatTuplesAlmostEqual (expected_result, result_data, 6)
def test_002_vector_slice_vv (self): """tests reversing and cutting off the beginning of the input""" src=gr.vector_source_f((1,2,3,4,5,6,7,8,9,10,11,12,13,14,15)) expected_result = (5,4,3,10,9,8,15,14,13) dst=gr.vector_sink_f() reor1=gr.stream_to_vector(gr.sizeof_float, 5) reor2=gr.vector_to_stream(gr.sizeof_float, 3) slicer=mlse_swig.vector_slice_vv(gr.sizeof_float, 5, 2, 3, 1) self.tb.connect(src,reor1,slicer,reor2,dst) self.tb.run() self.tb.run () result_data = dst.data () self.assertFloatTuplesAlmostEqual (expected_result, result_data, 6)
def test_001_vector_slice_vv(self): """tests negative offsets""" src = gr.vector_source_f( (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15)) expected_result = (0, 1, 2, 0, 6, 7, 0, 11, 12) dst = gr.vector_sink_f() reor1 = gr.stream_to_vector(gr.sizeof_float, 5) reor2 = gr.vector_to_stream(gr.sizeof_float, 3) slicer = mlse_swig.vector_slice_vv(gr.sizeof_float, 5, -1, 3) self.tb.connect(src, reor1, slicer, reor2, dst) self.tb.run() self.tb.run() result_data = dst.data() self.assertFloatTuplesAlmostEqual(expected_result, result_data, 6)
def test_002_vector_slice_vv(self): """tests reversing and cutting off the beginning of the input""" src = gr.vector_source_f( (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15)) expected_result = (5, 4, 3, 10, 9, 8, 15, 14, 13) dst = gr.vector_sink_f() reor1 = gr.stream_to_vector(gr.sizeof_float, 5) reor2 = gr.vector_to_stream(gr.sizeof_float, 3) slicer = mlse_swig.vector_slice_vv(gr.sizeof_float, 5, 2, 3, 1) self.tb.connect(src, reor1, slicer, reor2, dst) self.tb.run() self.tb.run() result_data = dst.data() self.assertFloatTuplesAlmostEqual(expected_result, result_data, 6)