clear; col = linspecer(6); % load dataset simdata = load('/Users/silasoettinghaus/Documents/MATLAB/Labor_Datensatz_PAM4_MPI/pam4_10km_1km/pam4__loop_3_56Gbd_19092023_1459.mat'); % get common variables of simulation loop fdac = simdata.saveStructTemp.common.f_DAC; fadc = simdata.saveStructTemp.common.f_ADC; fsym = simdata.saveStructTemp.common.f_sym; % 0) build RX Signal y_rx = Electricalsignal(simdata.saveStructTemp.dp_tsynch_out'); y_rx.fs = 2.*fsym; % 0) build tx reference Signal for eq training y_digimod = Electricalsignal(simdata.saveStructTemp.digi_mod_out'); y_digimod.fs = fsym; % 1) normlaize y_rx.normalize("mode","rms"); % 2.1) equalize eq = EQ("K",2,"plottrain",0,"plotfinal",0,... "training_length",4096,"training_loops",3,... "Ne",[50,9,3],"Nb",[2,0,0],... "DCmu",0,"DDmu",[0.0004 0.0005 0.0005 0.0005 ],"DFEmu",0.005,"FFEmu",0.005,... "dd_loops",3,"epsilon",[10 100 1000 ],"M",2,... "thres",[0.005 0.0004 0.0005 ],"l1act",0,"delay",0,"rho",0.0005,"ideal_dfe",0,"DB_aim",0); eq2 = EQ_silas("Ne",[50,9,3],"Nb",[2,0,0],"trainlength",4096,"mu_dc_dd",0,"mu_dc_train",0,"mu_ffe_train",0.005,"mu_combined_dd",[0.0004 0.0005 0.0005 0.0005 ],"ddloops",3,"trainloops",3); [Eq_out] = eq.process(y_rx,y_digimod); [Eq_out2] = eq2.process(y_rx,y_digimod); figure() scatter(1:length(Eq_out.signal),Eq_out.signal,4,'.','MarkerEdgeColor',col(4,:),'DisplayName','After EQ'); % 2.2) MPI reduction blocks % 3) digital demodulation digimod = PAMmapper(2^simdata.saveStructTemp.common.M,0); d_hat = digimod.demap(Eq_out); d_hat2 = digimod.demap(Eq_out2); d_ = digimod.demap(Electricalsignal(simdata.saveStructTemp.digi_mod_out')); d = simdata.saveStructTemp.prms_out; % 4) BER calculation [totalbits,errors_bm,ber_dhat,loc] = calc_ber(d_hat.signal(1:end,:) ,d(1:end,:)',"skip",0,"returnErrorLocation",1); [totalbits2,errors_bm2,ber_dhat2,loc] = calc_ber(d_hat2.signal(1:end,:) ,d(1:end,:)',"skip",0,"returnErrorLocation",1); ber_nodctap = mean(simdata.saveStructTemp.prms_compare_state.BER ); disp(['BER_new_eq1: ',num2str(ber_dhat),' BER_new_eq2: ',num2str(ber_dhat2),' BER_old: ',num2str(ber_nodctap)]);