CLEANUP - changes to folder structure

This commit is contained in:
Silas Oettinghaus
2026-03-25 10:57:48 +01:00
parent 0c5ad28f0a
commit 0ae846d3c3
351 changed files with 405 additions and 1294 deletions

View File

@@ -0,0 +1,65 @@
M = wh.parameter.M.values(1);
datarate = wh.parameter.datarate.values(1);
sir = wh.parameter.sir.values(1);
laser_linewidth = wh.parameter.laser_linewidth.values(1);
pn_key = wh.parameter.pn_key.values(1);
rop = wh.parameter.rop.values;
cfs = wh.parameter.vbias_rel.values;
cols = linspecer(6);
c_cnt = 0;
for c = cfs
c_cnt = c_cnt+1;
for pnk = pn_key
%get ROP curve data for cur. sir and realization
ber_ffe = wh.getStoValue('ber_ffe',M,datarate,sir,laser_linewidth,pnk,rop,c);
try
rrop_ffe(c_cnt,1) = getIntersection(ber_ffe,rop);
end
if 1
% Create rop plot
figure(43);
hold on; % Retain the plot so new points can be added without complete redraw
plot(rop,ber_ffe',"LineWidth",1,"LineStyle","-","Marker",".","MarkerSize",10,"DisplayName","ber ffe",'Color',cols(5,:));
yline(3.8e-3,'DisplayName','HD-FEC');
xlabel('Signal to Interference Ratio (dB)');
ylabel('Bit Error Rate (BER)');
set(gca,'yscale','log');
grid on;
legend
end
end
end
figure(2243);
hold on; % Retain the plot so new points can be added without complete redraw
plot(cfs,mean(rrop_ffe,2,"omitnan")',"LineWidth",1,"LineStyle","--","Marker",".","MarkerSize",10,"DisplayName","FFE",'Color',cols(5,:));
xlabel('Clipfactor');
ylabel('Receiver Sensitivity');
%title(['Bit Error Rate vs. SIR; SIR: ',num2str(s),' dB']);
grid on;
legend
function i = getIntersection(ber,rop)
%get intersection between rop curve and hd-fec limit
hdfec = 3.8e-3 .* ones(size(ber));
i = InterX([rop;hdfec'],[rop;ber']);
if isempty(i)
i = NaN;
else
i = i(1);
end
end

View File

@@ -0,0 +1,59 @@
M = wh.parameter.M.values(1);
datarate = wh.parameter.datarate.values(1);
sirs = wh.parameter.sir.values;
laser_linewidths = wh.parameter.laser_linewidth.values;
pnoi = wh.parameter.pn_key.values;
rop = wh.parameter.rop.values;
winlengths = wh.parameter.winlength.values(1);
cols = linspecer(numel(winlengths));
figure(44);
hold on
cntlw = 0;
for laser_linewidth = laser_linewidths
cntlw = cntlw+1;
cntsir = 0;
for sir = sirs
cntsir = cntsir+1;
for pnk = pnoi
%cnt = cnt+1;
ber_ffe = wh.getStoValue('ber_ffe',M,datarate,sir,laser_linewidth,pnk,rop,winlength);
rrop_ffe(cntsir) = getIntersection(ber_ffe,rop);
end
end
plot(sirs,rrop_ffe,'DisplayName',['Linewidth: ',num2str(laser_linewidth.*1e-6),' MHz'],"LineWidth",1,"LineStyle","-","Marker",".","MarkerSize",10)
xlabel('Signal to Interference Ratio (dB)');
ylabel('Sensitivity in dBm');
title('Receiver Sensitivity vs. SIR');
set(gca,'Box','on');
grid on;
grid minor
legend
end
function i = getIntersection(ber,rop)
%get intersection between rop curve and hd-fec limit
hdfec = 3.8e-3 .* ones(size(ber));
i = InterX([rop;hdfec'],[rop;ber']);
if isempty(i)
i = NaN;
else
i = i(1);
end
end

View File

@@ -0,0 +1,71 @@
M = wh.parameter.M.values(1);
datarate = wh.parameter.datarate.values(1);
sirs = wh.parameter.sir.values;
laser_linewidth = wh.parameter.laser_linewidth.values(1);
pnoi = wh.parameter.pn_key.values;
rop = wh.parameter.rop.values;
winlengths = wh.parameter.winlength.values;
cols = linspecer(numel(winlengths));
figure(44);
hold on
cnt = 0;
for winlength = winlengths
cnt = cnt+1;
for sir = sirs
for pnk = pnoi
%cnt = cnt+1;
ber_ffe = wh.getStoValue('ber_ffe',M,datarate,sir,laser_linewidth,pnk,rop,winlength);
rrop_ffe(cnt,pnk) = getIntersection(ber_ffe,rop);
if sum(ber_ffe)
plot(rop,ber_ffe',"LineWidth",0.5,"LineStyle","-","Marker",".","MarkerSize",15,"DisplayName",['win len: ',num2str(winlength), ' '],"Color",cols(cnt,:));
yline(3.8e-3,'DisplayName','HD-FEC','LineStyle','--','HandleVisibility','off');
xlabel('Received Optical Power (dBm)');
ylabel('Bit Error Rate (BER)');
title('Bit Error Rate vs. ROP');
set(gca,'yscale','log');
set(gca,'Box','on');
grid on;
grid minor
legend
end
end
end
end
figure(123)
hold on
plot(winlengths,mean(rrop_ffe,2),'DisplayName',['Linewidth: 10 MHz'],"LineWidth",1,"LineStyle","-","Marker",".","MarkerSize",10)
xlabel('Window Length');
ylabel('Sensitivity in dBm');
title('Receiver Sensitivity vs. Window Length');
set(gca,'Box','on');
grid on;
grid minor
legend
function i = getIntersection(ber,rop)
%get intersection between rop curve and hd-fec limit
hdfec = 3.8e-3 .* ones(size(ber));
i = InterX([rop;hdfec'],[rop;ber']);
if isempty(i)
i = NaN;
else
i = i(1);
end
end

View File

@@ -0,0 +1,76 @@
M = wh.parameter.M.values(1);
datarate = wh.parameter.datarate.values(1);
sirs = wh.parameter.sir.values;
laser_linewidth = wh.parameter.laser_linewidth.values(1);
pnoi = wh.parameter.pn_key.values;
rop = wh.parameter.rop.values;
hpf = wh.parameter.hpf.values(2);
cols = linspecer(16);
for lw = laser_linewidth
cnt = 0;
for sir = sirs
cnt = cnt+1;
for pnk = pnoi
%cnt = cnt+1;
ber_ffe = wh.getStoValue('ber_ffe',M,datarate,sir,lw,pnk,rop,fc);
rrop_ffe(cnt,pnk) = getIntersection(ber_ffe,rop);
% if 0
% % Create the initial plot
% figure(44);
% a = gca;
% cnt = numel(a.Children)+1;
% hold on; % Retain the plot so new points can be added without complete redraw
% end
if sum(ber_ffe)
figure(44);
plot(rop,ber_ffe',"LineWidth",0.5,"LineStyle","-","Marker",".","MarkerSize",15,"DisplayName","FFE only",'Color',cols(cnt,:));
yline(3.8e-3,'DisplayName','HD-FEC','LineStyle','--','HandleVisibility','off');
xlabel('Received Optical Power (dBm)');
ylabel('Bit Error Rate (BER)');
title('Bit Error Rate vs. ROP');
set(gca,'yscale','log');
set(gca,'Box','on');
grid on;
grid minor
legend
end
end
end
figure(123)
hold on
plot(sirs,mean(rrop_ffe,2),'DisplayName',['lw: ',num2str(lw), ' MHz'],"LineWidth",1,"LineStyle","-","Marker",".","MarkerSize",10)
xlabel('Signal to Interference (dBm)');
ylabel('Sensitivity in dBm');
title('Receiver Sensitivity vs. SIR');
set(gca,'Box','on');
grid on;
grid minor
legend
end
function i = getIntersection(ber,rop)
%get intersection between rop curve and hd-fec limit
hdfec = 3.8e-3 .* ones(size(ber));
i = InterX([rop;hdfec'],[rop;ber']);
if isempty(i)
i = NaN;
else
i = i(1);
end
end

View File

@@ -0,0 +1,59 @@
M = wh.parameter.M.values(1);
datarate = wh.parameter.datarate.values(1);
sirs = wh.parameter.sir.values;
laser_linewidth = wh.parameter.laser_linewidth.values(1);
pnoi = wh.parameter.pn_key.values;
rop = wh.parameter.rop.values;
hpfs = wh.parameter.hpf.values;
cols = linspecer(16);
figure(44);
hold on
for hpf = hpfs
cnt = 0;
for sir = sirs
cnt = cnt+1;
for pnk = pnoi
%cnt = cnt+1;
ber_ffe = wh.getStoValue('ber_ffe',M,datarate,sir,lw,pnk,rop,hpf);
% rrop_ffe(cnt,pnk) = getIntersection(ber_ffe,rop);
if sum(ber_ffe)
plot(rop,ber_ffe',"LineWidth",0.5,"LineStyle","-","Marker",".","MarkerSize",15,"DisplayName",['fc: ',num2str(hpf.*1e-6), ' MHz']);
yline(3.8e-3,'DisplayName','HD-FEC','LineStyle','--','HandleVisibility','off');
xlabel('Received Optical Power (dBm)');
ylabel('Bit Error Rate (BER)');
title('Bit Error Rate vs. ROP');
set(gca,'yscale','log');
set(gca,'Box','on');
grid on;
grid minor
legend
end
end
end
end
function i = getIntersection(ber,rop)
%get intersection between rop curve and hd-fec limit
hdfec = 3.8e-3 .* ones(size(ber));
i = InterX([rop;hdfec'],[rop;ber']);
if isempty(i)
i = NaN;
else
i = i(1);
end
end

View File

@@ -0,0 +1,59 @@
M = wh.parameter.M.values(1);
datarate = wh.parameter.datarate.values(1);
sirs = wh.parameter.sir.values;
laser_linewidths = wh.parameter.laser_linewidth.values;
pnoi = wh.parameter.pn_key.values;
rop = wh.parameter.rop.values;
winlengths = wh.parameter.winlength.values(1);
cols = linspecer(numel(winlengths));
figure(44);
hold on
cntlw = 0;
for laser_linewidth = laser_linewidths
cntlw = cntlw+1;
cntsir = 0;
for sir = sirs
cntsir = cntsir+1;
for pnk = pnoi
%cnt = cnt+1;
ber_ffe = wh.getStoValue('ber_ffe',M,datarate,sir,laser_linewidth,pnk,rop,winlengths);
rrop_ffe(cntsir) = getIntersection(ber_ffe,rop);
end
end
plot(sirs,rrop_ffe,'DisplayName',['Linewidth: ',num2str(laser_linewidth.*1e-6),' MHz'],"LineWidth",1,"LineStyle","-","Marker",".","MarkerSize",10)
xlabel('Signal to Interference Ratio (dB)');
ylabel('Sensitivity in dBm');
title('Receiver Sensitivity vs. SIR');
set(gca,'Box','on');
grid on;
grid minor
legend
end
function i = getIntersection(ber,rop)
%get intersection between rop curve and hd-fec limit
hdfec = 3.8e-3 .* ones(size(ber));
i = InterX([rop;hdfec'],[rop;ber']);
if isempty(i)
i = NaN;
else
i = i(1);
end
end

View File

@@ -0,0 +1,52 @@
M = wh.parameter.M.values(1);
datarate = wh.parameter.datarate.values(1);
sir = wh.parameter.sir.values(1);
laser_linewidth = wh.parameter.laser_linewidth.values(1);
pn_key = wh.parameter.pn_key.values;
rop = wh.parameter.rop.values;
cols = linspecer(8);
cnt = 0;
for pnk = pn_key
%cnt = cnt+1;
ber_ffe = wh.getStoValue('ber_ffe',M,datarate,sir,laser_linewidth,pnk,rop);
ber_dcavg = wh.getStoValue('ber_dcavg',M,datarate,sir,laser_linewidth,pnk,rop);
ber_adapt = wh.getStoValue('ber_adapt',M,datarate,sir,laser_linewidth,pnk,rop);
ber_derem = wh.getStoValue('ber_dcrem',M,datarate,sir,laser_linewidth,pnk,rop);
% Create the initial plot
figure(44);
a = gca;
cnt = numel(a.Children)+1;
hold on; % Retain the plot so new points can be added without complete redraw
if sum(ber_ffe)
plot(rop,ber_ffe',"LineWidth",0.5,"LineStyle","-","Marker",".","MarkerSize",15,"DisplayName","FFE only",'Color',cols(cnt,:));
end
if sum(ber_dcavg)
plot(rop,ber_dcavg',"LineWidth",0.5,"LineStyle","-","Marker",".","MarkerSize",15,"DisplayName","FFE + FF DC Avg.",'Color',cols(cnt+1,:));
end
if sum(ber_adapt)
plot(rop,ber_adapt',"LineWidth",0.5,"LineStyle","-","Marker",".","MarkerSize",15,"DisplayName","FFE + Adaptive Levels",'Color',cols(cnt+2,:));
end
if sum(ber_derem)
plot(rop,ber_derem',"LineWidth",0.5,"LineStyle","-","Marker",".","MarkerSize",15,"DisplayName","FFE + Adaptive DC-Subtraction",'Color',cols(cnt+3,:));
end
end
yline(3.8e-3,'DisplayName','HD-FEC','LineStyle','--','HandleVisibility','off');
xlabel('Received Optical Power (dBm)');
ylabel('Bit Error Rate (BER)');
title('Bit Error Rate vs. ROP');
set(gca,'yscale','log');
set(gca,'Box','on');
grid on;
grid minor
legend

View File

@@ -0,0 +1,81 @@
M = wh.parameter.M.values(1);
datarate = wh.parameter.datarate.values(1);
sir = wh.parameter.sir.values(4);
laser_linewidths = wh.parameter.laser_linewidth.values;
pn_key = wh.parameter.pn_key.values;
rop = wh.parameter.rop.values;
cols = linspecer(4);
for laser_linewidth = laser_linewidths
s_cnt = 0;
for s = sir
s_cnt = s_cnt+1;
for pnk = pn_key
%get ROP curve data for cur. sir and realization
ber_ffe = wh.getStoValue('ber_ffe',M,datarate,s,laser_linewidth,pnk,rop);
ber_dcavg = wh.getStoValue('ber_dcavg',M,datarate,s,laser_linewidth,pnk,rop);
ber_adapt = wh.getStoValue('ber_adapt',M,datarate,s,laser_linewidth,pnk,rop);
ber_derem = wh.getStoValue('ber_dcrem',M,datarate,s,laser_linewidth,pnk,rop);
rrop_ffe(s_cnt,pnk) = getIntersection(ber_ffe,rop);
rrop_dcavg(s_cnt,pnk) = getIntersection(ber_dcavg,rop);
rrop_adapt(s_cnt,pnk) = getIntersection(ber_adapt,rop);
rrop_derem(s_cnt,pnk) = getIntersection(ber_derem,rop);
if 1
% Create rop plot
figure(43);
hold on; % Retain the plot so new points can be added without complete redraw
plot(rop,ber_ffe',"LineWidth",1,"LineStyle","-","Marker",".","MarkerSize",10,"DisplayName","ber ffe",'Color',cols(1,:));
% scatter(rrop_ffe(s_cnt,pnk),3.8e-3,'LineWidth',2);
plot(rop,ber_dcavg',"LineWidth",1,"LineStyle","-","Marker",".","MarkerSize",10,"DisplayName","ber dcavg",'Color',cols(2,:));
plot(rop,ber_adapt',"LineWidth",1,"LineStyle","-","Marker",".","MarkerSize",10,"DisplayName","ber adapt",'Color',cols(3,:));
plot(rop,ber_derem',"LineWidth",1,"LineStyle","-","Marker",".","MarkerSize",10,"DisplayName","ber dcrem",'Color',cols(4,:));
yline(3.8e-3,'DisplayName','HD-FEC');
xlabel('Signal to Interference Ratio (dB)');
ylabel('Bit Error Rate (BER)');
title(['Bit Error Rate vs. SIR; SIR: ',num2str(s),' dB']);
set(gca,'yscale','log');
grid on;
legend
end
end
end
figure(223);
hold on; % Retain the plot so new points can be added without complete redraw
% plot(sir,mean(rrop_ffe,2,"omitnan")',"LineWidth",1,"LineStyle",":","Marker",".","MarkerSize",10,"DisplayName","FFE",'Color',cols(1,:));
% plot(sir,mean(rrop_dcavg,2,"omitnan")',"LineWidth",1,"LineStyle","-","Marker",".","MarkerSize",10,"DisplayName",['Linewidth: ',num2str(laser_linewidth.*1e-6),' MHz'],'Color',cols(2,:));
% plot(sir,mean(rrop_adapt,2,"omitnan")',"LineWidth",1,"LineStyle","-","Marker",".","MarkerSize",10,"DisplayName",['Linewidth: ',num2str(laser_linewidth.*1e-6),' MHz']);
plot(sir,mean(rrop_derem,2,"omitnan")',"LineWidth",1,"LineStyle","-","Marker",".","MarkerSize",10,"DisplayName",['Linewidth: ',num2str(laser_linewidth.*1e-6),' MHz']);
xlabel('Signal to Interference Ratio (dB)');
ylabel('Receiver Sensitivity');
title(['Bit Error Rate vs. SIR']);
grid on;
legend
end
function i = getIntersection(ber,rop)
%get intersection between rop curve and hd-fec limit
hdfec = 3.8e-3 .* ones(size(ber));
i = InterX([rop;hdfec'],[rop;ber']);
if isempty(i)
i = NaN;
else
i = i(1);
end
end

View File

@@ -0,0 +1,35 @@
M = wh.parameter.M.values(1);
datarate = wh.parameter.datarate.values(1);
sir = wh.parameter.sir.values;
laser_linewidth = wh.parameter.laser_linewidth.values(1);
pn_key = wh.parameter.pn_key.values;
rop = wh.parameter.rop.values(1);
cols = linspecer(4);
cnt = 0;
for pnk = pn_key
cnt = cnt+1;
ber_ffe = wh.getStoValue('ber_ffe',M,datarate,sir,laser_linewidth,pnk,rop);
ber_dcavg = wh.getStoValue('ber_dcavg',M,datarate,sir,laser_linewidth,pnk,rop);
ber_adapt = wh.getStoValue('ber_adapt',M,datarate,sir,laser_linewidth,pnk,rop);
ber_derem = wh.getStoValue('ber_dcrem',M,datarate,sir,laser_linewidth,pnk,rop);
% Create the initial plot
figure(44);
hold on; % Retain the plot so new points can be added without complete redraw
plot(sir,ber_ffe',"LineWidth",1,"LineStyle","-","Marker",".","MarkerSize",10,"DisplayName","ber ffe",'Color',cols(1,:));
plot(sir,ber_dcavg',"LineWidth",1,"LineStyle","-","Marker",".","MarkerSize",10,"DisplayName","ber dcavg",'Color',cols(2,:));
plot(sir,ber_adapt',"LineWidth",1,"LineStyle","-","Marker",".","MarkerSize",10,"DisplayName","ber adapt",'Color',cols(3,:));
plot(sir,ber_derem',"LineWidth",1,"LineStyle","-","Marker",".","MarkerSize",10,"DisplayName","ber dcrem",'Color',cols(4,:));
end
yline(3.8e-3,'DisplayName','HD-FEC');
xlabel('Signal to Interference Ratio (dB)');
ylabel('Bit Error Rate (BER)');
title('Bit Error Rate vs. SIR');
set(gca,'yscale','log');
grid on;
legend