def build_blocks( self, vlen, cp_len, snr_db, sigpow, startup, N, LOS_power, no_taps, have_LOS ): self.fading_channel = \ static_fading_channel( LOS_power, no_taps, vlen, have_LOS ) self.freq_resp = self.fading_channel.freq_resp assert( len(self.freq_resp) == vlen ) ############################################################################ # select channel estimator to be tested her # self.uut = channel_estimator_003( vlen, cp_len ) self.uut = channel_estimator_001( vlen) ############################################################################ block = self.uut.preamble_td #print abs(sigpow) #print sum(numpy.abs(block)**2.0)/len(block) assert( abs( sigpow - sum(numpy.abs(block)**2.0)/len(block) ) < 1e-4 ) # power if cp_len > 0: block = concatenate([ block[ len(block) - cp_len : len(block) ], block ]) self.block = block self.compare = gr.add_const_vcc( -1.0 * numpy.array(self.freq_resp) ) self.mean_squared_error = vector_acc_se2( vlen, startup, N ) self.dst = gr.vector_sink_f() self.awgn_channel = awgn_channel( snr_db, sigpow ) self.block_src = gr.vector_source_c( self.block, True ) self.sampler = ofdm.vector_sampler( gr.sizeof_gr_complex, vlen ) self.perfect_trigger = perfect_block_trigger( len(self.block) ) self.fft = scaled_fft( vlen )
def test_add_const_vcc_five(self): src_data = (1.0 + 2.0j, 3.0 + 4.0j, 5.0 + 6.0j, 7.0 + 8.0j, 9.0 + 10.0j) op = gr.add_const_vcc((11.0 + 12.0j, 13.0 + 14.0j, 15.0 + 16.0j, 17.0 + 18.0j, 19.0 + 20.0j)) exp_data = (12.0 + 14.0j, 16.0 + 18.0j, 20.0 + 22.0j, 24.0 + 26.0j, 28.0 + 30.0j) self.help_const_cc(src_data, exp_data, op)
def __init__(self, vlen): gr.hier_block2.__init__(self, "vector_equalizer", gr.io_signature(1,1,gr.sizeof_gr_complex*vlen), gr.io_signature(1,1,gr.sizeof_gr_complex*vlen)) self.input=gr.add_const_vcc([0.0]*vlen) self.connect(self, self.input) c2mag = gr.complex_to_mag(vlen) max_v = gr.max_ff(vlen) interpolator = gr.interp_fir_filter_fff(vlen,[1.0]*vlen) f2c = gr.float_to_complex() v2s = gr.vector_to_stream(gr.sizeof_gr_complex, vlen) normalizer = gr.divide_cc() s2v = gr.stream_to_vector(gr.sizeof_gr_complex, vlen) self.connect(self.input, v2s, (normalizer,0)) self.connect(self.input, c2mag, max_v, interpolator, f2c, (normalizer,1)) self.connect(normalizer, s2v) self.connect(s2v, self)
def __init__(self, vlen): gr.hier_block2.__init__( self, "vector_equalizer", gr.io_signature(1, 1, gr.sizeof_gr_complex * vlen), gr.io_signature(1, 1, gr.sizeof_gr_complex * vlen)) self.input = gr.add_const_vcc([0.0] * vlen) self.connect(self, self.input) c2mag = gr.complex_to_mag(vlen) max_v = gr.max_ff(vlen) interpolator = gr.interp_fir_filter_fff(vlen, [1.0] * vlen) f2c = gr.float_to_complex() v2s = gr.vector_to_stream(gr.sizeof_gr_complex, vlen) normalizer = gr.divide_cc() s2v = gr.stream_to_vector(gr.sizeof_gr_complex, vlen) self.connect(self.input, v2s, (normalizer, 0)) self.connect(self.input, c2mag, max_v, interpolator, f2c, (normalizer, 1)) self.connect(normalizer, s2v) self.connect(s2v, self)
def test_add_const_vcc_one(self): src_data = (1.0 + 2.0j, ) op = gr.add_const_vcc((2.0 + 3.0j, )) exp_data = (3.0 + 5.0j, ) self.help_const_cc(src_data, exp_data, op)
def test_add_const_vcc_five(self): src_data = (1.0+2.0j, 3.0+4.0j, 5.0+6.0j, 7.0+8.0j, 9.0+10.0j) op = gr.add_const_vcc((11.0+12.0j, 13.0+14.0j, 15.0+16.0j, 17.0+18.0j, 19.0+20.0j)) exp_data = (12.0+14.0j, 16.0+18.0j, 20.0+22.0j, 24.0+26.0j, 28.0+30.0j) self.help_const_cc(src_data, exp_data, op)
def test_add_const_vcc_one(self): src_data = (1.0+2.0j,) op = gr.add_const_vcc((2.0+3.0j,)) exp_data = (3.0+5.0j,) self.help_const_cc(src_data, exp_data, op)