Example #1
0
    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)
Example #2
0
    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)
Example #3
0
	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)
Example #4
0
	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)
Example #5
0
 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)
Example #6
0
 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)