def __init__(self, subc, vlen, ss): gr.hier_block2.__init__( self, "new_snr_estimator", gr.io_signature(2, 2, gr.sizeof_gr_complex * vlen), #gr.io_signature2(2,2,gr.sizeof_float*vlen,gr.sizeof_float*vlen/ss*(ss-1))) gr.io_signature(1, 1, gr.sizeof_float * vlen)) print "Created Milan's SINR estimator 2" config = station_configuration() # trigger = [0]*vlen # trigger[0] = 1 # # v = range (vlen/ss) # ones_ind= map(lambda z: z*ss,v) # # skip2_pr0 = skip(gr.sizeof_gr_complex,vlen) # skip2_pr1 = skip(gr.sizeof_gr_complex,vlen) # for x in ones_ind: # skip2_pr0.skip(x) # skip2_pr1.skip(x) # # #print "skipped ones",ones_ind # # v2s_pr0 = gr.vector_to_stream(gr.sizeof_gr_complex,vlen) # v2s_pr1 = gr.vector_to_stream(gr.sizeof_gr_complex,vlen) # # s2v2_pr0 = gr.stream_to_vector(gr.sizeof_gr_complex,vlen/ss*(ss-1)) # trigger_src_2_pr0 = gr.vector_source_b(trigger,True) # s2v2_pr1 = gr.stream_to_vector(gr.sizeof_gr_complex,vlen/ss*(ss-1)) # trigger_src_2_pr1 = gr.vector_source_b(trigger,True) # # mag_sq_zeros_pr0 = gr.complex_to_mag_squared(vlen/ss*(ss-1)) # mag_sq_zeros_pr1 = gr.complex_to_mag_squared(vlen/ss*(ss-1)) # # # filt_zeros_pr0 = gr.single_pole_iir_filter_ff(0.01,vlen/ss*(ss-1)) # filt_zeros_pr1 = gr.single_pole_iir_filter_ff(0.01,vlen/ss*(ss-1)) # v1 = vlen/ss*(ss-1) # vevc1 =[-1]*v1 # neg_nomin_z = gr.multiply_const_vff(vevc1) # div_z=gr.divide_ff(vlen/ss*(ss-1)) # on_zeros = gr.add_const_vff(vevc1) # sum_zeros = add_vff(vlen/ss*(ss-1)) # # For average #sum_all = vector_sum_vff(vlen) #mult = blocks.multiply_const_ff(1./vlen) #scsnr_db_av = blocks.nlog10_ff(10,1,0) #filt_end_av = filter.single_pole_iir_filter_ff(0.1) # # # self.connect((self,0),v2s_pr0,skip2_pr0,s2v2_pr0,mag_sq_zeros_pr0,filt_zeros_pr0) # self.connect(trigger_src_2_pr0,(skip2_pr0,1)) # # # # self.connect((self,1),v2s_pr1,skip2_pr1,s2v2_pr1,mag_sq_zeros_pr1,filt_zeros_pr1) # self.connect(trigger_src_2_pr1,(skip2_pr1,1)) # # # # On zeros # self.connect(filt_zeros_pr1,(sum_zeros,0)) # self.connect(filt_zeros_pr0,neg_nomin_z,(sum_zeros,1)) # self.connect(sum_zeros,div_z) # self.connect(filt_zeros_pr0,(div_z,1)) estimator = sinr_estimator(vlen, ss, config.dc_null) scsnr_db = blocks.nlog10_ff(10, vlen, 0) #filt_end = filter.single_pole_iir_filter_ff(0.1,vlen) dd = [] #for i in range (vlen/ss): # dd.extend([i*ss]) for i in range(vlen / ss): if i < (vlen / ss) / 2: dd.extend([i * ss + 4 + config.dc_null / 2]) else: dd.extend([i * ss + 4 - config.dc_null / 2]) #print dd interpolator = sinr_interpolator(vlen, ss, dd) self.connect((self, 0), (estimator, 0)) self.connect((self, 1), (estimator, 1)) #self.connect(estimator,interpolator,filt_end,scsnr_db,self) self.connect(estimator, interpolator, scsnr_db, self)
def __init__(self, subc, vlen, ss): gr.hier_block2.__init__(self, "new_snr_estimator", gr.io_signature(2,2,gr.sizeof_gr_complex*vlen), #gr.io_signature2(2,2,gr.sizeof_float*vlen,gr.sizeof_float*vlen/ss*(ss-1))) gr.io_signature(1,1,gr.sizeof_float*vlen)) print "Created Milan's SINR estimator 2" config = station_configuration() # trigger = [0]*vlen # trigger[0] = 1 # # v = range (vlen/ss) # ones_ind= map(lambda z: z*ss,v) # # skip2_pr0 = skip(gr.sizeof_gr_complex,vlen) # skip2_pr1 = skip(gr.sizeof_gr_complex,vlen) # for x in ones_ind: # skip2_pr0.skip(x) # skip2_pr1.skip(x) # # #print "skipped ones",ones_ind # # v2s_pr0 = gr.vector_to_stream(gr.sizeof_gr_complex,vlen) # v2s_pr1 = gr.vector_to_stream(gr.sizeof_gr_complex,vlen) # # s2v2_pr0 = gr.stream_to_vector(gr.sizeof_gr_complex,vlen/ss*(ss-1)) # trigger_src_2_pr0 = gr.vector_source_b(trigger,True) # s2v2_pr1 = gr.stream_to_vector(gr.sizeof_gr_complex,vlen/ss*(ss-1)) # trigger_src_2_pr1 = gr.vector_source_b(trigger,True) # # mag_sq_zeros_pr0 = gr.complex_to_mag_squared(vlen/ss*(ss-1)) # mag_sq_zeros_pr1 = gr.complex_to_mag_squared(vlen/ss*(ss-1)) # # # filt_zeros_pr0 = gr.single_pole_iir_filter_ff(0.01,vlen/ss*(ss-1)) # filt_zeros_pr1 = gr.single_pole_iir_filter_ff(0.01,vlen/ss*(ss-1)) # v1 = vlen/ss*(ss-1) # vevc1 =[-1]*v1 # neg_nomin_z = gr.multiply_const_vff(vevc1) # div_z=gr.divide_ff(vlen/ss*(ss-1)) # on_zeros = gr.add_const_vff(vevc1) # sum_zeros = add_vff(vlen/ss*(ss-1)) # # For average #sum_all = vector_sum_vff(vlen) #mult = blocks.multiply_const_ff(1./vlen) #scsnr_db_av = blocks.nlog10_ff(10,1,0) #filt_end_av = filter.single_pole_iir_filter_ff(0.1) # # # self.connect((self,0),v2s_pr0,skip2_pr0,s2v2_pr0,mag_sq_zeros_pr0,filt_zeros_pr0) # self.connect(trigger_src_2_pr0,(skip2_pr0,1)) # # # # self.connect((self,1),v2s_pr1,skip2_pr1,s2v2_pr1,mag_sq_zeros_pr1,filt_zeros_pr1) # self.connect(trigger_src_2_pr1,(skip2_pr1,1)) # # # # On zeros # self.connect(filt_zeros_pr1,(sum_zeros,0)) # self.connect(filt_zeros_pr0,neg_nomin_z,(sum_zeros,1)) # self.connect(sum_zeros,div_z) # self.connect(filt_zeros_pr0,(div_z,1)) estimator = sinr_estimator(vlen, ss, config.dc_null) scsnr_db = blocks.nlog10_ff(10,vlen,0) #filt_end = filter.single_pole_iir_filter_ff(0.1,vlen) dd = [] #for i in range (vlen/ss): # dd.extend([i*ss]) for i in range (vlen/ss): if i < (vlen/ss)/2: dd.extend([i*ss + 4 + config.dc_null/2]) else: dd.extend([i*ss + 4 - config.dc_null/2]) #print dd interpolator = sinr_interpolator(vlen, ss,dd) self.connect((self,0),(estimator,0)) self.connect((self,1),(estimator,1)) #self.connect(estimator,interpolator,filt_end,scsnr_db,self) self.connect(estimator,interpolator,scsnr_db,self)
def __init__(self, subc, vlen, ss): gr.hier_block2.__init__( self, "new_snr_estimator", gr.io_signature(2, 2, gr.sizeof_gr_complex * vlen), #gr.io_signature2(2,2,gr.sizeof_float*vlen,gr.sizeof_float*vlen/ss*(ss-1))) gr.io_signature2(2, 2, gr.sizeof_float * vlen, gr.sizeof_float)) print "Created Milan's SINR estimator" trigger = [0] * vlen trigger[0] = 1 v = range(vlen / ss) ones_ind = map(lambda z: z * ss, v) skip2_pr0 = skip(gr.sizeof_gr_complex, vlen) skip2_pr1 = skip(gr.sizeof_gr_complex, vlen) for x in ones_ind: skip2_pr0.skip(x) skip2_pr1.skip(x) #print "skipped ones",ones_ind v2s_pr0 = gr.vector_to_stream(gr.sizeof_gr_complex, vlen) v2s_pr1 = gr.vector_to_stream(gr.sizeof_gr_complex, vlen) s2v2_pr0 = gr.stream_to_vector(gr.sizeof_gr_complex, vlen / ss * (ss - 1)) trigger_src_2_pr0 = gr.vector_source_b(trigger, True) s2v2_pr1 = gr.stream_to_vector(gr.sizeof_gr_complex, vlen / ss * (ss - 1)) trigger_src_2_pr1 = gr.vector_source_b(trigger, True) mag_sq_zeros_pr0 = gr.complex_to_mag_squared(vlen / ss * (ss - 1)) mag_sq_zeros_pr1 = gr.complex_to_mag_squared(vlen / ss * (ss - 1)) filt_zeros_pr0 = gr.single_pole_iir_filter_ff(0.01, vlen / ss * (ss - 1)) filt_zeros_pr1 = gr.single_pole_iir_filter_ff(0.01, vlen / ss * (ss - 1)) v1 = vlen / ss * (ss - 1) vevc1 = [-1] * v1 neg_nomin_z = gr.multiply_const_vff(vevc1) div_z = gr.divide_ff(vlen / ss * (ss - 1)) on_zeros = gr.add_const_vff(vevc1) sum_zeros = add_vff(vlen / ss * (ss - 1)) # For average sum_all = vector_sum_vff(vlen) mult = gr.multiply_const_ff(1. / vlen) scsnr_db_av = gr.nlog10_ff(10, 1, 0) filt_end_av = gr.single_pole_iir_filter_ff(0.1) self.connect((self, 0), v2s_pr0, skip2_pr0, s2v2_pr0, mag_sq_zeros_pr0, filt_zeros_pr0) self.connect(trigger_src_2_pr0, (skip2_pr0, 1)) self.connect((self, 1), v2s_pr1, skip2_pr1, s2v2_pr1, mag_sq_zeros_pr1, filt_zeros_pr1) self.connect(trigger_src_2_pr1, (skip2_pr1, 1)) # On zeros self.connect(filt_zeros_pr1, (sum_zeros, 0)) self.connect(filt_zeros_pr0, neg_nomin_z, (sum_zeros, 1)) self.connect(sum_zeros, div_z) self.connect(filt_zeros_pr0, (div_z, 1)) scsnr_db = gr.nlog10_ff(10, vlen, 0) filt_end = gr.single_pole_iir_filter_ff(0.1, vlen) dd = [] for i in range(vlen / ss): dd.extend([i * ss]) #print dd interpolator = sinr_interpolator(vlen, ss, dd) self.connect(div_z, interpolator, filt_end, scsnr_db, self) self.connect(interpolator, sum_all, mult, scsnr_db_av, filt_end_av, (self, 1))
def __init__(self, subc, vlen, ss): gr.hier_block2.__init__(self, "new_snr_estimator", gr.io_signature(2,2,gr.sizeof_gr_complex*vlen), #gr.io_signature2(2,2,gr.sizeof_float*vlen,gr.sizeof_float*vlen/ss*(ss-1))) gr.io_signature2(2,2,gr.sizeof_float*vlen,gr.sizeof_float)) print "Created Milan's SINR estimator" trigger = [0]*vlen trigger[0] = 1 v = range (vlen/ss) ones_ind= map(lambda z: z*ss,v) skip2_pr0 = skip(gr.sizeof_gr_complex,vlen) skip2_pr1 = skip(gr.sizeof_gr_complex,vlen) for x in ones_ind: skip2_pr0.skip(x) skip2_pr1.skip(x) #print "skipped ones",ones_ind v2s_pr0 = gr.vector_to_stream(gr.sizeof_gr_complex,vlen) v2s_pr1 = gr.vector_to_stream(gr.sizeof_gr_complex,vlen) s2v2_pr0 = gr.stream_to_vector(gr.sizeof_gr_complex,vlen/ss*(ss-1)) trigger_src_2_pr0 = gr.vector_source_b(trigger,True) s2v2_pr1 = gr.stream_to_vector(gr.sizeof_gr_complex,vlen/ss*(ss-1)) trigger_src_2_pr1 = gr.vector_source_b(trigger,True) mag_sq_zeros_pr0 = gr.complex_to_mag_squared(vlen/ss*(ss-1)) mag_sq_zeros_pr1 = gr.complex_to_mag_squared(vlen/ss*(ss-1)) filt_zeros_pr0 = gr.single_pole_iir_filter_ff(0.01,vlen/ss*(ss-1)) filt_zeros_pr1 = gr.single_pole_iir_filter_ff(0.01,vlen/ss*(ss-1)) v1 = vlen/ss*(ss-1) vevc1 =[-1]*v1 neg_nomin_z = gr.multiply_const_vff(vevc1) div_z=gr.divide_ff(vlen/ss*(ss-1)) on_zeros = gr.add_const_vff(vevc1) sum_zeros = add_vff(vlen/ss*(ss-1)) # For average sum_all = vector_sum_vff(vlen) mult = gr.multiply_const_ff(1./vlen) scsnr_db_av = gr.nlog10_ff(10,1,0) filt_end_av = gr.single_pole_iir_filter_ff(0.1) self.connect((self,0),v2s_pr0,skip2_pr0,s2v2_pr0,mag_sq_zeros_pr0,filt_zeros_pr0) self.connect(trigger_src_2_pr0,(skip2_pr0,1)) self.connect((self,1),v2s_pr1,skip2_pr1,s2v2_pr1,mag_sq_zeros_pr1,filt_zeros_pr1) self.connect(trigger_src_2_pr1,(skip2_pr1,1)) # On zeros self.connect(filt_zeros_pr1,(sum_zeros,0)) self.connect(filt_zeros_pr0,neg_nomin_z,(sum_zeros,1)) self.connect(sum_zeros,div_z) self.connect(filt_zeros_pr0,(div_z,1)) scsnr_db = gr.nlog10_ff(10,vlen,0) filt_end = gr.single_pole_iir_filter_ff(0.1,vlen) dd = [] for i in range (vlen/ss): dd.extend([i*ss]) #print dd interpolator = sinr_interpolator(vlen, ss,dd) self.connect(div_z,interpolator,filt_end,scsnr_db,self) self.connect(interpolator,sum_all,mult,scsnr_db_av,filt_end_av,(self,1))