Files
imdd_silas/projects/HighSpeedExperiment_2024/Auswertung_JLT/gmi_vs_rate.m
Silas Oettinghaus 99898da519 MLSE has some more class settings
DSP auswertung weiter geschrieben
2025-10-08 09:51:47 +02:00

88 lines
2.9 KiB
Matlab

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);
M = 8;
fp = QueryFilter();
% fp.where('Runs', 'run_id','EQUALS', 987);
fp.where('Runs', 'pam_level','EQUALS', M);
% fp.where('Runs', 'symbolrate','EQUALS', 165e9);
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);
% Create the figure
figure(18);
hold on
for pre_emph = [0,1]
dbmode_filtered = dataTable(dataTable.db_mode == ~pre_emph,:);
for eqs = [equalizer_structure.vnle]
eq_choice = equalizer_structure(eqs);
if sum(eqstructures == eq_choice)~=1
disp(eq_choice)
continue
end
eq_filtered = dbmode_filtered(dbmode_filtered.equalizer_structure == eq_choice,:);
if eqs ==equalizer_structure.vnle_pf_mlse
eq_filtered = eq_filtered(eq_filtered.DIR == "1",:);
end
symbolrate_sorted = sortrows(eq_filtered,{'symbolrate'}, 'ascend');
% Example data (replace these with your real vectors)
symbolrate = symbolrate_sorted.symbolrate.*1e-9; % in baud
bitrate = symbolrate * 2;
gmi = symbolrate_sorted.GMI; % BER
snr = symbolrate_sorted.SNR; % BER
cols = cbrewer2('Paired',12);
dname = [char(eq_choice)];
dname = strrep(dname,'_','+');
if pre_emph
dname = [dname,'; w/ pre-emph.'];
else
dname = [dname,'; w/o pre-emph.'];
end
plot(symbolrate, snr, 'LineWidth', 1.5, 'MarkerSize', 5,'Marker','o','LineStyle','-','Color',cols((2*eqs)+1+pre_emph,:),'MarkerEdgeColor',cols((2*eqs)+1+pre_emph,:),'MarkerFaceColor',[1,1,1],'DisplayName',[dname]);
grid on;
% Axis labels and title
xlabel('Bit Rate Gbps', 'FontSize', 12);
ylabel('GMI', 'FontSize', 12);
title('GMI vs. Bit Rate', 'FontSize', 14, 'FontWeight', 'bold');
% Improve tick formatting
set(gca, 'XScale', 'linear', ...
'YScale', 'linear', ...
'TickLabelInterpreter', 'none', ...
'FontSize', 11);
legend
xticks(symbolrate);
% Optional: tighten axis limits
xlim([min(symbolrate), max(symbolrate)]);
% ylim([log2(M)-1, log2(M)]);
end
end