def dec_regimes(): """Single ZC sequence with Decimation""" p = lib.SyncParams() p.zc_len = 73 p.plen = 61 p.rolloff = 0.2 #p.f_samp = 4e6 #p.f_symb = 1e6 p.f_symb = 30.72e6 p.f_samp = p.f_symb*4 p.repeat = 1 p.spacing_factor = 1 # CHANGE TO TWO! p.power_weight = 2 p.full_sim = True p.bias_removal = True p.ma_window = 1 # number of samples to average in the crosscorr i.e. after analog modulation p.train_type = 'chain' # Type of training sequence p.crosscorr_type = 'match_decimate' p.match_decimate_fct = lib.md_clkphase p.peak_detect = 'wavg' p.pulse_type = 'rootraisedcosine' p.central_padding = 0 # As a fraction of zpos length ctrl = SimControls() ctrl.steps = 40 # Approx number of emissions per node ctrl.basephi = 6000 # How many samples between emission ctrl.display = True # Show stuff in the console ctrl.keep_intermediate_values = False # Needed to draw graphs ctrl.nodecount = 20 # Number of nodes ctrl.static_nodes = 0 ctrl.CFO_step_wait = float('inf') # Use float('inf') to never correct for CFO ctrl.TO_step_wait = 3 ctrl.max_start_delay = 8 # In factor of basephi ctrl.theta_bounds = [0.2,0.8] # In units of phi #ctrl.theta_bounds = [0.48,0.52] # In units of phi #ctrl.theta_bounds = [0.5,0.5] # In units of phi #ctrl.theta_bounds = [0,1] # In units of phi ctrl.deltaf_bound = 3e-2 #ctrl.deltaf_bound = 0 ctrl.rand_init = False ctrl.epsilon_TO = 0.5 ctrl.non_rand_seed = 11231231 # Only used if rand_init is False ctrl.noise_power = float('-inf') #ctrl.noise_power = -101 + 9 # in dbm ctrl.delay_params = lib.DelayParams(lib.delay_pdf_3gpp_exp) ctrl.delay_params.taps = 5 ctrl.max_dist_from_origin = 250 # (in meters) ctrl.delay_params.max_dist_from_origin = 250 # (in meters) ctrl.delay_params.p_sigma = 500 # Paths sigma ctrl.half_duplex = False ctrl.hd_slot0 = 0.3 # in terms of phi ctrl.hd_slot1 = 0.7 # in terms of phi ctrl.hd_block_during_emit = True ctrl.hd_block_extrawidth = 0 # as a factor of offset (see runsim to know what is offset) ctrl.var_winlen = False ctrl.vw_minsize = 5 # as a factor of len(p.analog_sig) ctrl.vw_lothreshold = 0.1 # winlen reduction threshold ctrl.vw_hithreshold = 0.1 # winlen increase threshold ctrl.vw_lofactor = 1.5 # winlen reduction factor ctrl.vw_hifactor = 2 # winlen increase factor ctrl.prop_correction = False ctrl.pc_step_wait = 0 #ctrl.pc_b, ctrl.pc_a = lib.hipass_filter4(11, pi/1000, 0.5) #ctrl.pc_b, ctrl.pc_a = lib.hipass_semicirc_zeros(11, pi/4, 0.1) #ctrl.pc_b, ctrl.pc_a = lib.hipass_filter4(11, pi/4, 1) #ctrl.pc_b, ctrl.pc_a = lib.hipass_remez(20) #ctrl.pc_b, ctrl.pc_a = lib.hipass_butter(8) #ctrl.pc_b, ctrl.pc_a = lib.hipass_cheby(8) ctrl.pc_b, ctrl.pc_a = lib.hipass_avg(10) ctrl.pc_avg_thresh = float('inf') # If std of N previous TOx samples is above this value, then\ ctrl.pc_std_thresh = float(30) # If std of N previous TOx samples is above this value, then\ # no PC is applied (but TOy is still calculated) ctrl.saveall = True cdict = { 'nodecount':[x for x in range(10,61,1)] #'nodecou } pdict = {} #pdict = {'match_decimate_fct':[lib.md_clkphase, lib.md_energy]} return ctrl, p, cdict, pdict
def dec_sample_theta(): p = lib.SyncParams() p.zc_len = 32 p.plen = 31 p.rolloff = 0.2 p.f_symb = 30.72e6 p.f_samp = p.f_symb*4 p.repeat = 1 p.spacing_factor = 1 p.power_weight = 2 p.full_sim = True p.bias_removal = False p.ma_window = 1 # number of samples to average in the crosscorr i.e. after analog modulation p.train_type = 'single' # Type of training sequence p.crosscorr_type = 'match_decimate' p.match_decimate_fct = lib.downsample p.peak_detect = 'wavg' p.pulse_type = 'rootraisedcosine' p.central_padding = 0 # As a fraction of zpos length p.scfdma_precode = True p.scfdma_L = 8 p.scfdma_M = p.zc_len*p.scfdma_L p.scfdma_sinc_len_factor = p.scfdma_L ctrl = SimControls() ctrl.steps = 40 # Approx number of emissions per node ctrl.basephi = 6000 # How many samples between emission ctrl.display = True # Show stuff in the console ctrl.keep_intermediate_values = False # Needed to draw graphs ctrl.nodecount = 15 # Number of nodes ctrl.static_nodes = 0 ctrl.CFO_step_wait = float('inf') # Use float('inf') to never correct for CFO ctrl.TO_step_wait = 5 ctrl.max_start_delay = 10 # In factor of basephi #ctrl.theta_bounds = [0.3,0.7] # In units of phi #ctrl.theta_bounds = [0.48,0.52] # In units of phi #ctrl.theta_bounds = [0.5,0.5] # In units of phi #ctrl.theta_bounds = [0,1] # In units of phi ctrl.theta_bounds = [0,0.6] # In units of phi ctrl.deltaf_bound = 3e-2 #ctrl.deltaf_bound = 0 ctrl.rand_init = False ctrl.epsilon_TO = 0.5 #seed = int(np.random.rand()*1e8); print(seed) seed = 2596829 ctrl.non_rand_seed = seed # Only used if rand_init is False #ctrl.non_rand_seed = 57276545 # Only used if rand_init is False #ctrl.noise_power = float('-inf') ctrl.noise_power = -101 + 9 # in dbm ctrl.delay_params = lib.DelayParams(lib.delay_pdf_3gpp_exp) ctrl.delay_params.taps = 5 ctrl.max_dist_from_origin = 250 # (in meters) ctrl.delay_params.max_dist_from_origin = 250 # (in meters) ctrl.half_duplex = False ctrl.hd_slot0 = 0.3 # in terms of phi ctrl.hd_slot1 = 0.7 # in terms of phi ctrl.hd_block_during_emit = True ctrl.hd_block_extrawidth = 0 # as a factor of offset (see runsim to know what is offset) ctrl.var_winlen = False ctrl.vw_minsize = 5 # as a factor of len(p.analog_sig) ctrl.vw_lothreshold = 0.1 # winlen reduction threshold ctrl.vw_hithreshold = 0.1 # winlen increase threshold ctrl.vw_lofactor = 1.5 # winlen reduction factor ctrl.vw_hifactor = 2 # winlen increase factor ctrl.prop_correction = False ctrl.pc_step_wait = 0 ctrl.pc_b, ctrl.pc_a = lib.hipass_avg(7) ctrl.pc_avg_thresh = float('inf') # If std of N previous TOx samples is above this value, then\ ctrl.pc_std_thresh = float(80) # If std of N previous TOx samples is above this value, then\ # no PC is applied (but TOy is still calculated) ctrl.saveall = True cdict = {'rand_init':[True]} #cdict = { # 'nodecount':[x for x in range(ncount_lo, ncount_hi,step)]*3 # } pdict = {} #pdict = {'match_decimate_fct':[lib.md_clkphase]*ntot+[lib.md_energy]*ntot+[lib.md_static]*ntot} return ctrl, p, cdict, pdict