57 lines
1.9 KiB
Matlab
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
|