M = wh.parameter.M.values(1); datarate = wh.parameter.datarate.values(1); sirs = wh.parameter.sir.values; laser_linewidth = wh.parameter.laser_linewidth.values(1); pnoi = wh.parameter.pn_key.values; rop = wh.parameter.rop.values; winlengths = wh.parameter.winlength.values; cols = linspecer(numel(winlengths)); figure(44); hold on cnt = 0; for winlength = winlengths cnt = cnt+1; for sir = sirs for pnk = pnoi %cnt = cnt+1; ber_ffe = wh.getStoValue('ber_ffe',M,datarate,sir,laser_linewidth,pnk,rop,winlength); rrop_ffe(cnt,pnk) = getIntersection(ber_ffe,rop); if sum(ber_ffe) plot(rop,ber_ffe',"LineWidth",0.5,"LineStyle","-","Marker",".","MarkerSize",15,"DisplayName",['win len: ',num2str(winlength), ' '],"Color",cols(cnt,:)); yline(3.8e-3,'DisplayName','HD-FEC','LineStyle','--','HandleVisibility','off'); xlabel('Received Optical Power (dBm)'); ylabel('Bit Error Rate (BER)'); title('Bit Error Rate vs. ROP'); set(gca,'yscale','log'); set(gca,'Box','on'); grid on; grid minor legend end end end end figure(123) hold on plot(winlengths,mean(rrop_ffe,2),'DisplayName',['Linewidth: 10 MHz'],"LineWidth",1,"LineStyle","-","Marker",".","MarkerSize",10) xlabel('Window Length'); ylabel('Sensitivity in dBm'); title('Receiver Sensitivity vs. Window Length'); set(gca,'Box','on'); grid on; grid minor legend function i = getIntersection(ber,rop) %get intersection between rop curve and hd-fec limit hdfec = 3.8e-3 .* ones(size(ber)); i = InterX([rop;hdfec'],[rop;ber']); if isempty(i) i = NaN; else i = i(1); end end