Files
imdd_silas/projects/MPI_Juni/mpilength_curve.m
2024-08-14 09:36:51 +02:00

57 lines
1.9 KiB
Matlab

function mpilength_curve(wh,options)
arguments
wh
options.DisplayName = '';
end
M = wh.parameter.M.values(1);
datarate = wh.parameter.datarate.values(2);
sirs = wh.parameter.sir.values(1);
mpi_len = wh.parameter.mpi_pathlen.values;
laser_linewidths = wh.parameter.laser_linewidth.values;
pn_key = wh.parameter.pn_key.values;
vbias_rel = wh.parameter.vbias_rel.values(1);
rop = wh.parameter.rop.values(1);
clipfactor = wh.parameter.clipfactor.values(1);
rrcalpha = wh.parameter.rrcalpha.values(1);
% Create the initial plot
figure(4);
cols = linspecer(6);
cnt = 0;
for lw = 1:numel(laser_linewidths)
laser_linewidth = laser_linewidths(lw);
n=ceil(sqrt(wh.parameter.laser_linewidth.length));
%subplot(n,n,sp);
cnt=cnt+6;
for sir = sirs
for i = 1:numel(mpi_len)
bers(:,i) = wh.getStoValue('ber',M,datarate,sir,mpi_len(i),laser_linewidth,pn_key,vbias_rel,rop,clipfactor, rrcalpha);
% ers(:,i) = unique(wh.getStoValue('er',M,datarate,sir,mpi_len(i),laser_linewidth,pn_key,vbias_rel,rop,clipfactor, rrcalpha));
dn = ['M: ',num2str(M),'; Rate: ',num2str(datarate),'; SIR ',num2str(sir), 'dB; lw: ',num2str(laser_linewidth.*1e-6),' MHz'];
end
hold on; % Retain the plot so new points can be added without complete redraw
scatter(mpi_len,bers,"LineWidth",1,"Marker",".","DisplayName",string(dn),"MarkerEdgeColor",cols(cnt,:),'HandleVisibility','off');
plot(mpi_len,mean(bers),"LineWidth",1,"Marker",".","DisplayName",string(dn),"MarkerEdgeColor",cols(cnt,:),"Color",cols(cnt,:));
end
yline(3.8e-3,'DisplayName','HD-FEC');
xlabel('MPI Path in Meter');
ylabel('Bit Error Rate (BER)');
title(['Bit Error Rate vs. Interference Path Length; Linewidth: ',num2str(laser_linewidth.*1e-6), ' MHz']);
set(gca,'yscale','log');
grid on;
ylim([1e-5,4e-2])
end
legend
end