database_type = 'mysql'; dataBase = 'labor_highspeed';%'C:\Users\Silas\Documents\MATLAB\Datensätze\sioe_labor\silas_labor_newdsp_newstructure.db'; db = DBHandler("dataBase", [dataBase], "type", database_type); fp = QueryFilter(); % fp.where('Runs', 'run_id','EQUALS', 987); M = 6; fp.where('Runs', 'pam_level','EQUALS', M); baudrate = 162e9; fp.where('Runs', 'symbolrate','EQUALS', baudrate); % fp.where('Runs', 'fiber_length','EQUALS', 2); fp.where('Runs', 'is_mpi','EQUALS', 0); % fp.where('Runs', 'interference_path_length','EQUALS', 1000); % fp.where('Runs', 'loop_id','GREATER_THAN', 11); % fp.where('Runs', 'sir','EQUALS',18); % fp.where('Runs', 'wavelength','EQUALS', 1310); fp.where('Runs', 'db_mode','EQUALS', 1); % 0 == high preemphasis // 1 == low preemphasis fp.where('Runs', 'rop_attenuation','EQUALS', 0); fields = db.getTableFieldNames('power_state_info'); fields = [fields; db.getTableFieldNames('dashboard_ungrouped_new')]; [dataTable,~] = db.queryDB(fp, fields); eqstructures = unique(dataTable.equalizer_structure); fiber_len = unique(dataTable.fiber_length); cnt = 1; f=figure(); clf hold on markers = {'o', 's', 'd', '^', 'v', '>', '<', 'p', 'h'}; % Define marker styles for fl = 1:numel(fiber_len) fl_filtered = dataTable(dataTable.fiber_length == fiber_len(fl),:); for eqs = [equalizer_structure.vnle_pf_mlse] eq_choice = equalizer_structure(eqs); if sum(eqstructures == eq_choice)~=1 disp(eq_choice) continue end eq_filtered = fl_filtered(fl_filtered.equalizer_structure == eq_choice,:); dispersion_sorted = sortrows(eq_filtered, {'accumulated_dispersion'}, 'ascend'); % dispersion_sorted = dispersion_sorted(dispersion_sorted.wavelength <= 1320,:); % dispersion_sorted = dispersion_sorted(dispersion_sorted.BER < 0.02,:); % pull out your vectors accumulated_dispersion = dispersion_sorted.accumulated_dispersion; ber = dispersion_sorted.BER; % ber = dispersion_sorted.BER_precoded; run_ids = dispersion_sorted.run_id; % <-- this is what we want in the datatip len = dispersion_sorted.fiber_length; lambda = dispersion_sorted.wavelength; cols = cbrewer2('Set1',8); % cols = flip(cbrewer2('RdYlGn',14)); cols = linspecer(8); ber_wavelen_grouped = groupsummary( ... dispersion_sorted, ... % input table "wavelength", ... % grouping variable "min", ... % which summary statistic "BER_precoded"); dname = sprintf('%s; %d km',eq_choice, fiber_len(fl)); h1 = plot(ber_wavelen_grouped.wavelength, ber_wavelen_grouped.min_BER_precoded,'LineWidth', 2, 'MarkerSize', 5,'Marker',markers(cnt),'LineStyle','-','Color',cols(cnt,:),'MarkerEdgeColor','auto','MarkerFaceColor','white','DisplayName',dname); plotallscatters=0; if plotallscatters % plot the two curves and capture their Line handles dname = sprintf('%s; %d km',eq_choice, fiber_len(fl)); h1 = plot(lambda, ber,'LineWidth', 1.5, 'MarkerSize', 5,'Marker','o','LineStyle','none','Color',cols(cnt,:),'MarkerFaceColor',cols(cnt,:),'DisplayName',dname); % —————— Add run_id as a datatip row —————— % For each line, tell the datatip template where to find the run_id: h1.DataTipTemplate.DataTipRows(end+1) = ... dataTipTextRow('run\_id', run_ids); h1.DataTipTemplate.DataTipRows(end+1) = ... dataTipTextRow('len', len); h1.DataTipTemplate.DataTipRows(end+1) = ... dataTipTextRow('lambda', lambda); end xticks(sort(unique(lambda))); xticklabels(sort(unique(lambda))); grid on; % Labels, scales, legend, etc. xlabel('Wavelength in nm','FontSize',12); ylabel('BER','FontSize',12); tit = sprintf('%d GBd PAM-%d',baudrate.*1e-9, M); title(tit,'FontSize',14,'FontWeight','bold'); set(gca, 'XScale','linear','YScale','log','FontSize',11); legend xlim([min(lambda)-2, max(lambda)+2]); ylim([1e-4, 0.2]); cnt = cnt+1; end end yline([4.85e-3, 2e-2],'--','LineWidth',1,'HandleVisibility','off'); posH = get(f, 'Position'); % [left, bottom, width, height] newPos = [posH(1), posH(2), 750, 300]; set(f, 'Position', newPos);