scs_m.props.context=[ 'Te=0.1;' 'Nu=16;' 'Nech=15;' 'N=Nu*Nech;' 'Nbit=2;' 'nb_coef=127; ' 'r=0.35; ' 'fe=Nech; ' 'gain_em=1; ' 'gain_rec=1/Nech; ' 'pulse=zeros(1,1); ' 't_Ts=1/fe*(-nb_coef/2:nb_coef/2-1); ' 'pulse = 4*r/%pi*(cos((1+r)*%pi*t_Ts) + (sin((1-r)*%pi*t_Ts)./(4*r*t_Ts)))./(1-(4*r*t_Ts).^2); ' 'Nb_vec=2^11; ' 'nb_event=3;' 'Tfin=Te*Nb_vec' 'sigma=0.6;' ];
//Define simulation name sim_name='qpsk_teb_sim'; //Define simulation path sim_path='qpsk_teb_sim'; //Load scicos diagram load(MODNUM+'/simu/'+sim_path+'/'+sim_name+'.cos'); //Tests for scicos version ierr = execstr('current_version=get_scicos_version()','errcatch') if ierr==0 then //scilab > 4.1x //check version if type(scs_m)==17 then if find(getfield(1,scs_m)=='version')<>[] then if scs_m.version<>'' then scicos_ver=scs_m.version end end end if current_version<>scicos_ver then scs_m=do_version(scs_m,scicos_ver) end end //Define context exec(MODNUM+'/simu/'+sim_path+'/'+sim_name+'_ctxt.sce'); context=scs_m.props("context");execstr(context); //Define Simulation end time scs_m.props.tf=Tfin; //Define other variables //sig_log=-13:1:0; sig_log=-13:1:-2; Eb=cos(%pi*(1/(2^Nbit))); sig=[]; for i=1:size(sig_log,2) sig(i)=Eb/10^(sig_log(i)/10); end nb_r=size(sig,1); nb_error_sav=zeros(nb_r,1); //Open Log file u_log=mopen(MODNUM+'/simu/'+sim_path+'/'+sim_name+'.log','a'); //Set flag (for display saved information in scilab window) flag=0; //Save inital state of simulation in Log file wlog_init(u_log,flag); //Save context in log file wlog_ctxt(u_log,flag); //Save and display util variable wlog_sv(u_log,tlist(['sig_log'],sig_log),flag); l=1; nbit_tot=0; cpu_tot=0; //while %t while l<3 nb_error=zeros(nb_r,1); //Loop for iterative simulation for j=1:nb_r //Save and display begin simulation date j wlog_bst(u_log,j,flag); //substitue context variable to be sweep scs_m.props.context=subst_ctxt(scs_m,'sigma','sigma='+string(sig(j))); //Initialise Info and %scicos_context variable //if exists('Info')==0 then Info=list(); end Info=list(); if exists('%scicos_context')==0 then %scicos_context=struct(); end //Do simulation with scicos_simulate timer(); Info=scicos_simulate(scs_m,Info,%scicos_context,"nw"); cpu_time=timer(); nb_bit=Nu*Nbit*(Nb_vec-nb_event); //Load result myvar=return_state_block(Info,"teb2"); nb_error(j)=myvar(1)(1); cpu_tot=cpu_tot+cpu_time; nbit_tot=nbit_tot+nb_bit; bit_s=nbit_tot/cpu_tot; printf("cpu_tot=%f,\t nbit_tot=%d,\t bit/s=%f\n",cpu_tot,nbit_tot,bit_s); //Save and display util variable wlog_sv(u_log,tlist(['nb_error'],nb_error(j)),flag); //Save and Disp final simulation date j wlog_fst(u_log,j,flag); end //post-processed result //nb_bit=Nu*Nbit*(Nb_vec-nb_event); nb_error_sav=nb_error_sav+nb_error; teb=nb_error_sav/(l*nb_bit); plot_teb(49,sig_log,teb,"1"); //Save and display post-processed vector(matrix) wlog_psv(u_log,tlist(['nb_bit';'nb_error_sav';'teb';'l'],nb_bit,nb_error_sav,teb,l,1)); // l=l+1; end //Close final state of simulation in Log file wlog_final(u_log,flag); //close log file mclose(u_log);