db = DBHandler("type","mysql","dataBase",'labor'); savePath = 'W:\labdata\ECOC Silas\ecoc_2025\'; fp = QueryFilter(); % fp.where('Runs', 'run_id','EQUALS', 987); M = 4; fp.where('Runs', 'pam_level','EQUALS', M); fp.where('Runs', 'symbolrate','EQUALS', 112e9); fp.where('Runs', 'fiber_length','EQUALS', 0); fp.where('Runs', 'is_mpi','EQUALS', 1); fp.where('Runs', 'interference_path_length','EQUALS', 1000); % fp.where('Runs', 'loop_id','GREATER_THAN', 11); fp.where('Runs', 'sir','EQUALS',20); [dataTable,sql_query] = db.queryDB(fp, db.getTableFieldNames('Runs')); [~, uniqueIdx] = unique(dataTable.run_id); % Get unique run_id indices dataTable.SIR = -7 - round(dataTable.power_mpi_interference); %% for i = 1:size(dataTable,1) dataTable_ = dataTable(i,:); % Extract unique configurations for each run_id fsym = dataTable_.symbolrate; M = double(dataTable_.pam_level); duob_mode = db_mode.(strrep(char(dataTable_.db_mode),'"','')); Tx_signal = load([savePath, char(dataTable_.tx_signal_path),'.mat']); Tx_signal = Tx_signal.Digi_sig; Tx_bits = load([savePath, char(dataTable_.tx_bits_path)]); Tx_bits = Tx_bits.Bits; Symbols_mapped = PAMmapper(M,0).map(Tx_bits); Symbols_mapped.fs = dataTable_.symbolrate; Symbols = load([savePath, char(dataTable_.tx_symbols_path)]); Symbols = Symbols.Symbols; Scpe_sig_raw = load([savePath, char(dataTable_.rx_raw_path(1))]); Scpe_sig_raw = Scpe_sig_raw.Scpe_sig_raw.normalize("mode","rms"); Scpe_sig_raw.plot("displayname",['Scope Signal (Run ID: ',num2str(dataTable_.run_id)],"fignum",dataTable_.run_id,"clear",0); disp(num2str(dataTable_.interference_path_length)); [sep_sig, avg_sig] = showLevelScatter(Scpe_sig_raw, Symbols, ... "fsym", fsym, ... "syncFs", 2*fsym, ... "fignum", 400, ... "normalize", true, ... "debug_plots", false); var(sep_sig,0,2,'omitnan') end