M = wh.parameter.M.values(1); datarate = wh.parameter.datarate.values(1); sir = wh.parameter.sir.values(1); laser_linewidth = wh.parameter.laser_linewidth.values(1); pn_key = wh.parameter.pn_key.values; rop = wh.parameter.rop.values; cols = linspecer(8); cnt = 0; for pnk = pn_key %cnt = cnt+1; ber_ffe = wh.getStoValue('ber_ffe',M,datarate,sir,laser_linewidth,pnk,rop); ber_dcavg = wh.getStoValue('ber_dcavg',M,datarate,sir,laser_linewidth,pnk,rop); ber_adapt = wh.getStoValue('ber_adapt',M,datarate,sir,laser_linewidth,pnk,rop); ber_derem = wh.getStoValue('ber_dcrem',M,datarate,sir,laser_linewidth,pnk,rop); % Create the initial plot figure(44); a = gca; cnt = numel(a.Children)+1; hold on; % Retain the plot so new points can be added without complete redraw if sum(ber_ffe) plot(rop,ber_ffe',"LineWidth",0.5,"LineStyle","-","Marker",".","MarkerSize",15,"DisplayName","FFE only",'Color',cols(cnt,:)); end if sum(ber_dcavg) plot(rop,ber_dcavg',"LineWidth",0.5,"LineStyle","-","Marker",".","MarkerSize",15,"DisplayName","FFE + FF DC Avg.",'Color',cols(cnt+1,:)); end if sum(ber_adapt) plot(rop,ber_adapt',"LineWidth",0.5,"LineStyle","-","Marker",".","MarkerSize",15,"DisplayName","FFE + Adaptive Levels",'Color',cols(cnt+2,:)); end if sum(ber_derem) plot(rop,ber_derem',"LineWidth",0.5,"LineStyle","-","Marker",".","MarkerSize",15,"DisplayName","FFE + Adaptive DC-Subtraction",'Color',cols(cnt+3,:)); end end 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