Files
imdd_silas/projects/Diss/MPI_revisit/investigate_results.m
Silas Oettinghaus 1879441999 more and more
2026-07-08 21:36:08 +02:00

87 lines
3.1 KiB
Matlab

% === DSP settings ===
dsp_options.database_type = "mysql";
dsp_options.dataBase = "labor";
dsp_options.server = "192.168.178.192";
dsp_options.port = 3306;
dsp_options.user = "silas";
dsp_options.password = "silas";
db = DBHandler("dataBase", dsp_options.dataBase, "type", dsp_options.database_type, ...
"server", dsp_options.server, "port", dsp_options.port, ...
"user", dsp_options.user, "password", dsp_options.password);
%%
fp = QueryFilter();
fp.where('Runs','run_id','GREATER_EQUAL',3153);
% fp.where('Runs', 'symbolrate', 'EQUALS', 112e9);
fp.where('Runs', 'fiber_length', 'EQUALS', 0);
% fp.where('Runs', 'interference_path_length', 'EQUALS', 300);
% fp.where('Runs', 'sir', 'EQUALS', 23);
fp.where('Runs', 'db_mode', 'EQUALS', '"no_db"');
% fp.where('Runs', 'is_mpi', 'EQUALS', 1);
% fp.where('Runs', 'pam_level', 'EQUALS', 4);
% fp.where('Runs', 'v_bias', 'EQUALS', 2.65);
[dataTable,~] = db.queryDB(fp, db.getTableFieldNames('mpi_superview'));
dataTable_save = dataTable;
%%
% No compensation method
dataTable = dataTable(dataTable.dc_buffer_len == 1, :);
dataTable = dataTable(dataTable.ffe_buffer_len == 1, :);
dataTable = dataTable(dataTable.smoothing_buffer_len == 0, :);
dataTable = dataTable(dataTable.smoothing_buffer_update == 0, :);
dataTable = dataTable(dataTable.DCmu == 0, :);
% BER over SIR
plotTable = sortrows(dataTable, 'sir');
validBer = ~isnan(plotTable.sir) & ~isnan(plotTable.BER) & plotTable.BER > 0 & plotTable.BER < 0.1;
figure;
hold on;
scatter(plotTable.sir(validBer), plotTable.BER(validBer), 36, ...
'filled', ...
'DisplayName', 'BER');
xlabel('SIR [dB]');
ylabel('BER');
title(sprintf('BER over SIR (%d filtered rows)', height(dataTable)));
legend('Location', 'best');
beautifyBERplot("setcolors", true, "setmarkers", true,"logscale",true,"polyfit",false);
%%
% Any Value over SIR
varname = 'BER';
groupvar = 'pam_level';
requiredCols = {'sir', varname, groupvar};
missingCols = setdiff(requiredCols, dataTable.Properties.VariableNames);
if ~isempty(missingCols)
error('Missing required column(s) for grouped plot: %s', strjoin(missingCols, ', '));
end
plotTable = sortrows(dataTable, 'sir');
validline = ~isnan(plotTable.sir) ...
& ~isnan(plotTable.(varname)) ...
& ~isnan(plotTable.(groupvar));% & plotTable.BER > 0 & plotTable.BER < 0.1;
groupValues = unique(plotTable.(groupvar)(validline));
figure;
hold on;
for groupIdx = 1:numel(groupValues)
currentGroup = groupValues(groupIdx);
groupRows = validline & plotTable.(groupvar) == currentGroup;
scatter(plotTable.sir(groupRows), plotTable.(varname)(groupRows), 36, ...
'filled', ...
'DisplayName', sprintf('PAM %g', currentGroup));
end
xlabel('SIR [dB]');
ylabel(varname);
title(sprintf('%s over SIR grouped by %s (%d filtered rows)', varname, groupvar, height(dataTable)));
legend('Location', 'best');
beautifyBERplot("setcolors", true, "setmarkers", true,"logscale",true,"polyfit",false);