87 lines
3.1 KiB
Matlab
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);
|