70 lines
2.4 KiB
Matlab
70 lines
2.4 KiB
Matlab
|
|
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','NOT_EQUAL', 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','LESS_EQUAL',20);
|
|
% fp.where('Runs','run_id','GREATER_EQUAL',3153);
|
|
|
|
[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;
|
|
% 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);
|
|
|
|
Scpe_sig_raw.spectrum("normalizeTo0dB",1);
|
|
|
|
|
|
disp(num2str(dataTable_.interference_path_length));
|
|
[separated_levels_sig, avg_sig] = showLevelScatter(Scpe_sig_raw, Symbols, ...
|
|
"fsym", fsym, ...
|
|
"syncFs", 2*fsym, ...
|
|
"fignum", 400, ...
|
|
"normalize", true, ...
|
|
"debug_plots", false,"showPlot",true,"showStdAnnotations",false,"yLimits",[-3 3]);
|
|
|
|
std_levels = std(separated_levels_sig,0,2,'omitnan');
|
|
mean_levels = mean(separated_levels_sig,2,'omitnan');
|
|
std_tot = std(Scpe_sig_raw.signal,0,1,'omitnan');
|
|
|
|
var_levels = std_levels.^2;
|
|
p = polyfit(mean_levels, var_levels, 1);
|
|
|
|
var_slope = p(1);
|
|
var_offset = p(2);c
|
|
|
|
end
|