Files
imdd_silas/projects/Messung_Zürich/dsp_all_files.m
2025-03-11 07:17:26 +01:00

114 lines
3.7 KiB
Matlab

% 202502211_km_fiber_Pmod_15dBm_P_PD_9p2494dBm_W03C34-0603E03_160GBd_8PAM__20250221T024256.h5
M = 8;
if M == 4
file_codes = {"20250221T032043",...
"20250221T032312",...
"20250221T032424",...
"20250221T032529",...
"20250221T032632",...
"20250221T032800",...
"20250221T032936",...
"20250221T033035",...
"20250221T033138",...
"20250221T033138",...
"20250221T033425",...
"20250221T033527",...
"20250221T033642",...
"20250221T033743",...
"20250221T033851",...
"20250221T034314",...
"20250221T034529",...
"20250221T034647",...
"20250221T034756",...
"20250221T034915",...
};
baudrate = [96,120,128,136,144,152,160,168,172,176,180,184,188,192,196,200,204,212,220,224];
pam4.result_vnle = result_vnle;
pam4.result_db = result_db;
elseif M ==8
file_codes = {"20250221T004651",... %96
"20250221T004926",...
"20250221T005844",...
"20250221T010032",...
"20250221T010150",...
"20250221T025505",...%144 ohne balun
"20250221T024629",...%152 ohne balun
"20250221T024315",...%160 ohne balun
"20250221T023534",...%168 ohne balun
"20250221T024929",...%172 ohne balun
"20250221T025305",...%176 ohne balun
};
file_codes = {"20250221T024256"};
baudrate = [96,112,120,128,136,144,152,160,168,172,176];
end
if 1
uloops = struct;
uloops.filecode = file_codes;
uloops.mu_dc = [0];
wh = DataStorage(uloops);
wh.addStorage("ber");
wh = submit_handle(@dsp_ief_file,wh,"parallel",0);
end
a = wh.getStoValue('ber',uloops.filecode, uloops.mu_ffe1);
% get best results per baudrate
ber_vnle_values = cellfun(@(a) cellfun(@(y) y.ber_vnle, a.vnle_package, 'UniformOutput', false), a, 'UniformOutput', false);
best_vnle = cellfun(@(x) min(cell2mat(x)), ber_vnle_values);
% ber_vnle_values = cellfun(@(a) cellfun(@(y) y.ber_vnle, a.vnle_pf_package, 'UniformOutput', false), a, 'UniformOutput', false);
% best_vnle = cellfun(@(x) min(cell2mat(x)), ber_vnle_values);
%
% ber_mlse_values = cellfun(@(a) cellfun(@(y) y.ber_mlse, a.vnle_pf_package, 'UniformOutput', false), a, 'UniformOutput', false);
% best_mlse = cellfun(@(x) min(cell2mat(x)), ber_mlse_values);
%%% PLOT PARAMETER OPTIMIZATION
figure(2)
cols = cbrewer2('Set1',6);
hold on
title(sprintf('%d km | %d nm | PAM %d',1,1313.5,M));
xax = uloops.mu_ffe1;
plot(xax,best_vnle,'DisplayName',sprintf('VNLE 50,3,3'),'Color',cols(o,:),'LineStyle','-','HandleVisibility','on');
% plot(xax,best_mlse,'DisplayName',sprintf('VNLE + 1 tap post-filter + MLSE'),'Color',cols(2,:),'LineStyle','-','HandleVisibility','on');
% plot(xax,best_db,'DisplayName',sprintf('DB tgt. + MLSE'),'Color',cols(3,:),'LineStyle','-','HandleVisibility','on');
set(gca, 'YScale', 'log');
ylim([5e-5 0.3]);
xlim([min(xax), max(xax) ]);
yline([3.8e-3, 2e-2],'HandleVisibility','off');
legend
beautifyBERplot()
xlabel('Adaption speed');
ylabel('BER');
%%% PLOT COMPLETE BAUDRATE
figure(20)
cols = cbrewer2('Set1',6);
hold on
title(sprintf('%d km | %d nm | PAM %d',1,1313.5,M));
plot(baudrate,best_vnle,'DisplayName',sprintf('VNLE'),'Color',cols(1,:),'LineStyle','-','HandleVisibility','on');
plot(baudrate,best_mlse,'DisplayName',sprintf('VNLE + 1 tap post-filter + MLSE'),'Color',cols(2,:),'LineStyle','-','HandleVisibility','on');
plot(baudrate,best_db,'DisplayName',sprintf('DB tgt. + MLSE'),'Color',cols(3,:),'LineStyle','-','HandleVisibility','on');
set(gca, 'YScale', 'log');
ylim([5e-5 0.3]);
xlim([min(baudrate), max(baudrate) ]);
yline([3.8e-3, 2e-2],'HandleVisibility','off');
legend
beautifyBERplot()
xlabel('Bit Rate in Gbps');
ylabel('BER');