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