Changes from mwork PC.
PDP 2025 MPI analysis new focus on database and SQL
This commit is contained in:
@@ -1,68 +0,0 @@
|
||||
% basePath = 'C:\Users\Silas\Documents\MATLAB\Datensätze\sioe_labor\';
|
||||
% db = DBHandler("pathToDB",[basePath,'silas_labor.db']);
|
||||
if 0
|
||||
|
||||
uloops = struct;
|
||||
uloops.precomp = [0];
|
||||
uloops.db_precode = [0];
|
||||
uloops.bitrate = [330,390,450].*1e9; %[300,330,360,390,420,450,480]
|
||||
uloops.laser_wavelength = [1310];
|
||||
uloops.M = [4];
|
||||
uloops.link_length = [2]; % 1,2,3,5,6,8,10
|
||||
%uloops.alpha = [0:0.1:1];
|
||||
|
||||
wh = DataStorage(uloops);
|
||||
wh.addStorage("ber");
|
||||
|
||||
wh = submit_simulations(wh,"parallel",1,"simulation_mode",0);
|
||||
|
||||
end
|
||||
|
||||
col = cbrewer2('spectral',6);%
|
||||
col=linspecer(5);
|
||||
|
||||
cnt = 1;
|
||||
for br = uloops.bitrate
|
||||
a = wh_burg.getStoValue('ber',uloops.precomp, uloops.db_precode, br , uloops.laser_wavelength, uloops.M, uloops.link_length);
|
||||
ber_mlse = cellfun(@(x) x.vnle_pf_package{1,1}.ber_mlse, a);
|
||||
alpha = cellfun(@(x) x.vnle_pf_package{1,1}.pf.coefficients, a,'UniformOutput', false);
|
||||
figure(23)
|
||||
hold on
|
||||
scatter(alpha{1}(2),ber_mlse,100,'MarkerEdgeColor',col(cnt,:),'Marker','x','LineWidth',2,'HandleVisibility','off');
|
||||
cnt = cnt+1;
|
||||
end
|
||||
|
||||
|
||||
|
||||
cnt = 1;
|
||||
alpha = [];
|
||||
|
||||
for br = uloops.bitrate
|
||||
|
||||
a = wh_alphas.getStoValue('ber',uloops.precomp, uloops.db_precode, br , uloops.laser_wavelength, uloops.M, uloops.link_length, [0:0.1:1]);
|
||||
ber_mlse = cellfun(@(x) x.vnle_pf_package{1,1}.ber_mlse, a);
|
||||
|
||||
x_ax = [0:0.1:1];
|
||||
|
||||
figure(23)
|
||||
hold on
|
||||
% title(sprintf('%d km | %d nm | PAM %d',uloops.link_length,wavelength,uloops.M));
|
||||
plot(x_ax,ber_mlse,'DisplayName',sprintf(' %d GBps PAM 4',br.*1e-9),'LineStyle','-','HandleVisibility','on','Color',col(cnt,:));
|
||||
|
||||
xticks(x_ax);
|
||||
set(gca, 'YScale', 'log');
|
||||
ylim([1e-5 0.4]);
|
||||
xlim([min(x_ax), max(x_ax) ]);
|
||||
yline([3.8e-3, 2e-2],'HandleVisibility','off');
|
||||
legend
|
||||
beautifyBERplot();
|
||||
xlabel('Channel $\alpha$');
|
||||
ylabel('BER');
|
||||
|
||||
cnt = cnt+1;
|
||||
|
||||
end
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,57 +0,0 @@
|
||||
% basePath = 'C:\Users\Silas\Documents\MATLAB\Datensätze\sioe_labor\';
|
||||
% db = DBHandler("pathToDB",[basePath,'silas_labor.db']);
|
||||
if 0
|
||||
|
||||
uloops = struct;
|
||||
uloops.precomp = [0];
|
||||
uloops.db_precode = [0];
|
||||
uloops.bitrate = [390].*1e9; %[300,330,360,390,420,450,480]
|
||||
uloops.laser_wavelength = [1310];
|
||||
uloops.M = [4];
|
||||
uloops.link_length = [2]; % 1,2,3,5,6,8,10
|
||||
uloops.vnle_order1 = [5,10:10:100];
|
||||
uloops.vnle_order2 = [0];
|
||||
uloops.vnle_order3 = [0];
|
||||
|
||||
wh = DataStorage(uloops);
|
||||
wh.addStorage("ber");
|
||||
|
||||
wh = submit_simulations(wh,"parallel",1,"simulation_mode",0);
|
||||
|
||||
end
|
||||
|
||||
|
||||
col = cbrewer2('spectral',6);%
|
||||
col=linspecer(5);
|
||||
cnt = 1;
|
||||
for n3 = uloops.vnle_order3
|
||||
|
||||
a = wh.getStoValue('ber',uloops.precomp, uloops.db_precode, uloops.bitrate , uloops.laser_wavelength, uloops.M, uloops.link_length,...
|
||||
uloops.vnle_order1,...
|
||||
uloops.vnle_order2,...
|
||||
n3);
|
||||
|
||||
ber_vnle = cellfun(@(x) x.vnle_pf_package{1,1}.ber_vnle, a);
|
||||
ber_mlse = cellfun(@(x) x.vnle_pf_package{1,1}.ber_mlse, a);
|
||||
ber_db = cellfun(@(x) x.dbtgt_package{1,1}.ber, a);
|
||||
log_bers = log10(ber_vnle + 1e-12);
|
||||
|
||||
figure(20)
|
||||
hold on
|
||||
title(sprintf('%d km | %d nm | PAM %d',uloops.link_length,wavelength,uloops.M));
|
||||
% plot(uloops.vnle_order1,ber_vnle,'DisplayName',sprintf('Tx precomp. + VNLE'),'LineStyle','-','HandleVisibility','on','Color',col(cnt,:));
|
||||
plot(uloops.vnle_order1,ber_mlse,'DisplayName',sprintf('VNLE + Postfilter + ;MLSE'),'LineStyle','-','HandleVisibility','on','Color',col(cnt,:));
|
||||
plot(uloops.vnle_order1,ber_db,'DisplayName',sprintf('DB tgt. VNLE + MLSE'),'LineStyle','-','HandleVisibility','on','Color',col(cnt+2,:));
|
||||
xticks(uloops.vnle_order1([1:1:end]));
|
||||
set(gca, 'YScale', 'log');
|
||||
ylim([5e-5 0.4]);
|
||||
xlim([min(uloops.vnle_order1), max(uloops.vnle_order1) ]);
|
||||
yline([3.8e-3, 2e-2],'HandleVisibility','off');
|
||||
legend
|
||||
beautifyBERplot();
|
||||
xlabel('Number of 1st order coeff.');
|
||||
ylabel('BER');
|
||||
|
||||
cnt = cnt+1;
|
||||
end
|
||||
|
||||
@@ -1,50 +0,0 @@
|
||||
if 0
|
||||
uloops = struct;
|
||||
uloops.precomp = [0];
|
||||
uloops.db_precode = [0,1];
|
||||
uloops.bitrate = [420].*1e9; %[300,330,360,390,420,450,480]
|
||||
% uloops.laser_wavelength = [1293,1297.5,1302,1306.5,1310,1313.4,1318,1322.7,1327.4];
|
||||
uloops.laser_wavelength = [1293, 1302,1310,1318,1327.4];
|
||||
uloops.M = [4,6,8];
|
||||
uloops.link_length = [5]; % 1,2,3,5,6,8,10
|
||||
wh = DataStorage(uloops);
|
||||
wh.addStorage("ber");
|
||||
|
||||
wh = submit_simulations(wh,"parallel",1,"simulation_mode",0);
|
||||
end
|
||||
|
||||
col = cbrewer2('Set2',6);%
|
||||
col=linspecer(5);
|
||||
cnt = 1;
|
||||
|
||||
m = 8;
|
||||
|
||||
% a = wh.getStoValue('ber',1, 0, uloops.bitrate , uloops.laser_wavelength, m, uloops.link_length);
|
||||
% ber_vnle = cellfun(@(x) x.vnle_pf_package{1,1}.ber_vnle, a);
|
||||
|
||||
a = wh.getStoValue('ber',0, 0, uloops.bitrate , uloops.laser_wavelength, m, uloops.link_length);
|
||||
ber_mlse = cellfun(@(x) x.vnle_pf_package{1,1}.ber_mlse, a);
|
||||
|
||||
a = wh.getStoValue('ber',0, 1, uloops.bitrate , uloops.laser_wavelength, m, uloops.link_length);
|
||||
ber_db = cellfun(@(x) x.dbtgt_package{1,1}.ber, a);
|
||||
|
||||
x_ax = uloops.laser_wavelength;
|
||||
|
||||
figure(21)
|
||||
hold on
|
||||
% title(sprintf('%d km | %d GBd | PAM %d',uloops.link_length,uloops.bitrate/log2(m).*1e-9,m));
|
||||
% plot(x_ax,ber_vnle,'DisplayName',sprintf('Tx precomp. + VNLE'),'LineStyle','-','HandleVisibility','on','Color',col(cnt+1,:));
|
||||
plot(x_ax,ber_mlse,'DisplayName',sprintf('VNLE + Postfilter + MLSE'),'LineStyle','-','HandleVisibility','on','Color',colorsets.DeepRed.RGB);
|
||||
% plot(x_ax,ber_db,'DisplayName',sprintf('DB tgt. VNLE + MLSE'),'LineStyle','-','HandleVisibility','on','Color',col(cnt,:));
|
||||
xticks(x_ax([1:1:end]));
|
||||
set(gca, 'YScale', 'log');
|
||||
ylim([5e-5 0.4]);
|
||||
xlim([min(x_ax)-3, max(x_ax)+3 ]);
|
||||
yline([3.8e-3, 2e-2],'HandleVisibility','off');
|
||||
legend
|
||||
beautifyBERplot();
|
||||
xlabel('Number of 1st order coeff.');
|
||||
ylabel('BER');
|
||||
|
||||
cnt = cnt+1;
|
||||
|
||||
@@ -1,70 +0,0 @@
|
||||
% basePath = 'C:\Users\Silas\Documents\MATLAB\Datensätze\sioe_labor\';
|
||||
% db = DBHandler("pathToDB",[basePath,'silas_labor.db']);
|
||||
if 0
|
||||
|
||||
uloops = struct;
|
||||
uloops.precomp = [0];
|
||||
uloops.db_precode = [0];
|
||||
uloops.bitrate = [300,330,360,390,420,450,480].*1e9; %[300,330,360,390,420,450,480]
|
||||
uloops.laser_wavelength = [1310];
|
||||
uloops.M = [4];
|
||||
uloops.link_length = [2]; % 1,2,3,5,6,8,10
|
||||
uloops.vnle_order1 = [50];
|
||||
uloops.vnle_order2 = [7];
|
||||
uloops.vnle_order3 = [7];
|
||||
uloops.pf_ncoeffs = [1,2,3];
|
||||
|
||||
wh = DataStorage(uloops);
|
||||
wh.addStorage("ber");
|
||||
|
||||
wh = submit_simulations(wh,"parallel",1,"simulation_mode",0);
|
||||
|
||||
end
|
||||
|
||||
col = cbrewer2('spectral',6);%
|
||||
col=linspecer(5);
|
||||
cnt = 1;
|
||||
alpha = [];
|
||||
for n = uloops.pf_ncoeffs
|
||||
|
||||
a = wh.getStoValue('ber',uloops.precomp, uloops.db_precode, uloops.bitrate , uloops.laser_wavelength, uloops.M, uloops.link_length,...
|
||||
uloops.vnle_order1,...
|
||||
uloops.vnle_order2,...
|
||||
uloops.vnle_order3,...
|
||||
n);
|
||||
|
||||
ber_vnle = cellfun(@(x) x.vnle_pf_package{1,1}.ber_vnle, a);
|
||||
ber_mlse = cellfun(@(x) x.vnle_pf_package{1,1}.ber_mlse, a);
|
||||
|
||||
% PF = cellfun(@(x) x.vnle_pf_package{1,1}.pf.coefficients, a,'UniformOutput',false);
|
||||
%
|
||||
% showTransferFunction(PF{3}.coefficients,"fignum",12,"color",clr.Set1.red,"DisplayName",['360 GBd']);
|
||||
%
|
||||
% showTransferFunction(PF{4}.coefficients,"fignum",12,"color",clr.Set1.blue,"DisplayName",['390 GBd']);
|
||||
%
|
||||
% showTransferFunction(PF{5}.coefficients,"fignum",12,'color',clr.Set1.green,"DisplayName",['420 GBd']);
|
||||
% ber_db = cellfun(@(x) x.dbtgt_package{1,1}.ber, a);
|
||||
|
||||
x_ax = uloops.bitrate.*1e-9;
|
||||
|
||||
figure(23)
|
||||
hold on
|
||||
title(sprintf('%d km | %d nm | PAM %d',uloops.link_length,wavelength,uloops.M));
|
||||
if n==1
|
||||
plot(x_ax,ber_vnle,'DisplayName',sprintf('Tx precomp. + VNLE'),'LineStyle','-','HandleVisibility','on','Color',col(cnt+4,:));
|
||||
end
|
||||
plot(x_ax,ber_mlse,'DisplayName',sprintf('VNLE + Postfilter + ;MLSE'),'LineStyle','-','HandleVisibility','on','Color',col(cnt,:));
|
||||
% plot(x_ax,ber_db,'DisplayName',sprintf('DB tgt. VNLE + MLSE'),'LineStyle','-','HandleVisibility','on','Color',col(cnt+2,:));
|
||||
xticks(x_ax([1:1:end]));
|
||||
set(gca, 'YScale', 'log');
|
||||
ylim([1e-5 0.4]);
|
||||
xlim([min(x_ax(2:end)), max(x_ax) ]);
|
||||
yline([3.8e-3, 2e-2],'HandleVisibility','off');
|
||||
legend
|
||||
beautifyBERplot();
|
||||
xlabel('Gross Bitrate in Gbps');
|
||||
ylabel('BER');
|
||||
|
||||
cnt = cnt+1;
|
||||
end
|
||||
|
||||
@@ -1,25 +1,22 @@
|
||||
|
||||
% basePath = 'C:\Users\Silas\Documents\MATLAB\Datensätze\sioe_labor\';
|
||||
% db = DBHandler("pathToDB",[basePath,'silas_labor.db']);
|
||||
if 0
|
||||
if 1
|
||||
uloops = struct;
|
||||
uloops.precomp = [1];
|
||||
uloops.db_precode = [0];
|
||||
uloops.bitrate = [300,330,360,390,420,450,480].*1e9; %[300,330,360,390,420,450,480]
|
||||
uloops.bitrate = [224].*1e9; %[300,330,360,390,420,450,480] [224,336,360,390,420,448] for MPI
|
||||
% uloops.laser_wavelength = [1293,1297.5,1302,1306.5,1310,1313.4,1318,1322.7,1327.4];
|
||||
uloops.precomp = [0];
|
||||
uloops.db_precode = [0];
|
||||
uloops.bitrate = [330].*1e9; %[300,330,360,390,420,450,480]
|
||||
uloops.laser_wavelength = [1310];
|
||||
uloops.M = [4,6,8];
|
||||
uloops.M = [4];
|
||||
uloops.link_length = [2]; % 1,2,3,5,6,8,10
|
||||
uloops.link_length = [1]; % 1,2,3,5,6,8,10
|
||||
uloops.interference_attenuation = [0,3,6,9,12,15,18,21,24,27,30,45];
|
||||
wh = DataStorage(uloops);
|
||||
wh.addStorage("ber");
|
||||
|
||||
wh = submit_simulations(wh,"parallel",0,"simulation_mode",0);
|
||||
|
||||
wh = submit_simulations(wh,"parallel",0,"simulation_mode",1);
|
||||
% wh = submit_simulations(wh,"parallel",0,"simulation_mode",0);
|
||||
wh = submit_handle(@imdd_model,wh,"parallel",1);
|
||||
|
||||
end
|
||||
|
||||
wh_ana = wh_master;
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
function [output] = imdd_model(simulation_mode,varargin)
|
||||
function [output] = imdd_model(varargin)
|
||||
|
||||
simulation_mode = 0;
|
||||
|
||||
%%% Change folder
|
||||
curFolder = pwd;
|
||||
@@ -17,6 +19,9 @@ fdac = 256e9;
|
||||
fadc = 256e9;
|
||||
random_key = 1;
|
||||
|
||||
interference_attenuation = 0;
|
||||
is_mpi = 1;
|
||||
|
||||
precomp = 0;
|
||||
db_precode = 0;
|
||||
|
||||
@@ -216,7 +221,7 @@ else
|
||||
'fiber_length', link_length, ...
|
||||
'interference_attenuation', [], ...
|
||||
'interference_path_length', [], ...
|
||||
'is_mpi', 0, ...
|
||||
'is_mpi', is_mpi, ...
|
||||
'pam_level', M, ...
|
||||
'precomp_amp', [], ...
|
||||
'rop_attenuation', 0, ...
|
||||
@@ -227,7 +232,8 @@ else
|
||||
);
|
||||
|
||||
selectedFields = {'Runs.run_id','Runs.tx_bits_path', 'Runs.tx_symbols_path', 'Runs.rx_sync_path','Runs.rx_raw_path',...
|
||||
'Configurations.db_mode','Configurations.pam_level','Configurations.bitrate','Configurations.symbolrate','Configurations.fiber_length','Configurations.wavelength','Configurations.precomp_amp','Measurements.power_rop','Configurations.v_bias'};
|
||||
'Configurations.db_mode','Configurations.pam_level','Configurations.bitrate','Configurations.symbolrate','Configurations.fiber_length','Configurations.wavelength','Configurations.precomp_amp','Measurements.power_rop','Configurations.v_bias',...
|
||||
'Configurations.interference_attenuation'};
|
||||
|
||||
[dataTable,sql_query] = database.queryDB(filterParams, selectedFields);
|
||||
[~, uniqueIdx] = unique(dataTable.run_id); % Get unique run_id indices
|
||||
@@ -245,6 +251,7 @@ else
|
||||
|
||||
|
||||
% Raw_signal = load([basePath, char(dataTable.rx_raw_path(1))]);
|
||||
% Raw_signal.Scpe_sig_raw.plot("displayname",'0db atten','fignum',10101)
|
||||
% Raw_signal = Raw_signal.Scpe_sig_raw;
|
||||
%
|
||||
% Raw_signal = Filter('filtdegree',4,"f_cutoff",Symbols.fs.*0.55,"fs",Raw_signal.fs,"filterType",filtertypes.gaussian,"active",true).process(Raw_signal);
|
||||
@@ -270,7 +277,7 @@ dbtgt_package = {};
|
||||
|
||||
|
||||
proc_occ = min(1,length(Scpe_cell));
|
||||
for occ = 1:proc_occ
|
||||
for occ = 1%:proc_occ
|
||||
|
||||
Scpe_sig = Scpe_cell{occ};
|
||||
|
||||
@@ -303,14 +310,16 @@ for occ = 1:proc_occ
|
||||
|
||||
% %%%%% VNLE + DFE %%%%
|
||||
if 0
|
||||
|
||||
eq_vnle_dfe = EQ("Ne",vnle_order,"Nb",[0,0,0],"training_length",len_tr,"training_loops",5,"dd_loops",5,"K",2,"DCmu",mu_dc,"DDmu",[mu_ffe mu_dfe],"DFEmu",0.005,"FFEmu",0,"plotfinal",0,"ideal_dfe",0);
|
||||
|
||||
[result] = vnle(eq_vnle_dfe,M,Scpe_sig,Symbols,Tx_bits,"precode_mode",doub_mode,"showAnalysis",0);
|
||||
eq_2 = FFE("epochs_tr",5,"epochs_dd",5,"len_tr",4096*2,"mu_dd",1e-4,"mu_tr",0,"order",2001,"sps",1,"decide",0);
|
||||
|
||||
[result] = vnle(eq_vnle_dfe,M,Scpe_sig,Symbols,Tx_bits,"precode_mode",doub_mode,"showAnalysis",1,"postFFE",[]);
|
||||
vnle_dfe_package{occ} = result;
|
||||
|
||||
end
|
||||
%%%%% VNLE + PF + MLSE %%%%
|
||||
if 0
|
||||
if 1
|
||||
|
||||
% len_tr = length(Symbols)-1000;
|
||||
eq_vnle_ = EQ("Ne",vnle_order,"Nb",dfe_order,"training_length",len_tr,"training_loops",5,"dd_loops",5,"K",2,"DCmu",mu_dc,"DDmu",[mu_ffe mu_dfe],"DFEmu",0.005,"FFEmu",0,"plotfinal",0,"ideal_dfe",1);
|
||||
@@ -325,7 +334,7 @@ for occ = 1:proc_occ
|
||||
|
||||
|
||||
%%%%% Duobinary Targeting %%%%
|
||||
if 0
|
||||
if 1
|
||||
|
||||
mlse_db = MLSE_viterbi("DIR",[1,1],"duobinary_output",0,"M",M,"trellis_states",PAMmapper(M,0).levels);
|
||||
eq_db = EQ("Ne",vnle_order,"Nb",dfe_order,"training_length",len_tr,"training_loops",5,"dd_loops",5,"K",2,"DCmu",mu_dc,"DDmu",[mu_ffe mu_dfe],"DFEmu",0.005,"FFEmu",0,"plotfinal",0,"ideal_dfe",1);
|
||||
|
||||
Reference in New Issue
Block a user