114 lines
3.7 KiB
Matlab
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');
|