FSO analysis:

- minimal changes in several files
- new Timing Rec from Magnus
This commit is contained in:
Silas Oettinghaus
2026-01-20 10:49:59 +01:00
parent ad14cd738f
commit 719e5508e7
14 changed files with 511 additions and 130 deletions

View File

@@ -0,0 +1,88 @@
wh_aeon = load("C:\Users\Silas\Documents\MATLAB\imdd_simulation\projects\Lab_analysis\aeon_soa_measurement_lambda_plaser_pump.mat");
wh_aeon = wh_aeon.wh;
wh_thor = load("C:\Users\Silas\Documents\MATLAB\imdd_simulation\projects\Lab_analysis\thorlabs_pdfa_measurement_lambda_plaser_pump.mat");
wh_thor = wh_thor.wh;
% Silas' custom "warehouse" datatype
wh_aeon.showInfo;
wh_thor.showInfo;
%% PLOT OSA SPECTRA
figure();hold on
cols = linspecer(4);
cols = cbrewer2('Paired',8);
subplot(1,2,1);hold on;
wh = wh_thor;
ccnt = 1;
pumps = wh.parameter.pump.values;
plasers = wh.parameter.laserpower.values;
scnt = 1;
for p = 1:numel(plasers)
for pmp = 1:numel(pumps)
subplot(numel(plasers),numel(pumps),scnt);hold on;
title(sprintf('Laser: %d dBm; Pump: %d %',plasers(p),pumps(pmp)),"Interpreter","tex")
for lambda = wh.parameter.lambda.values
spectrum_osa = wh_thor.getStoValue('spectrum_osa',plasers(p),lambda,pumps(pmp));
wavelength_osa = wh_thor.getStoValue('wavelength_osa',plasers(p),lambda,pumps(pmp));
plot(wavelength_osa,spectrum_osa,'DisplayName',sprintf('P_{in}: %d dB ',plasers(p)),'Color',cols(ccnt,:));
spectrum_osa = wh_aeon.getStoValue('spectrum_osa',plasers(p),lambda,pumps(pmp));
wavelength_osa = wh_aeon.getStoValue('wavelength_osa',plasers(p),lambda,pumps(pmp));
plot(wavelength_osa,spectrum_osa,'DisplayName',sprintf('P_{in}: %d dB ',plasers(p)),'Color',cols(ccnt+1,:));
ylim([-60, 20]);
beautifyBERplot("logscale",false,"setmarkers",0,"setcolors",0);
end
scnt = scnt +1;
end
ccnt = ccnt+2;
end
xlabel('Wavelength [nm]');
ylabel('OSNR [dB]')
%%
figure();hold on
cols = linspecer(4);
subplot(1,2,1);hold on;
wh = wh_thor;
ccnt = 1;
pumps = wh.parameter.pump.values;
plasers = wh.parameter.laserpower.values;
scnt = 1;
for p = 1:numel(plasers)
for pmp = 1:numel(pumps)
subplot(numel(plasers),numel(pumps),scnt);hold on;
ase_noise = wh_thor.getStoValue('pase_osa',plasers(p),wh.parameter.lambda.values,pumps(pmp));
signal = wh_thor.getStoValue('psig_osa',plasers(p),wh.parameter.lambda.values,pumps(pmp));
plot(wh.parameter.lambda.values,ase_noise,'DisplayName',sprintf('P_{in}: %d dB ',plasers(p)),'Color',cols(ccnt,:));
ase_noise = wh_aeon.getStoValue('pase_osa',plasers(p),wh.parameter.lambda.values,pumps(pmp));
signal = wh_aeon.getStoValue('psig_osa',plasers(p),wh.parameter.lambda.values,pumps(pmp));
plot(wh.parameter.lambda.values,ase_noise,'DisplayName',sprintf('P_{in}: %d dB ',plasers(p)),'Color',cols(ccnt,:),'LineStyle','-');
ylim([-60, 20]);
beautifyBERplot("logscale",false,"setmarkers",0,"setcolors",0);
scnt = scnt +1;
end
ccnt = ccnt+1;
end
xlabel('Wavelength [nm]');
ylabel('OSNR [dB]')