54 lines
1.8 KiB
Matlab
54 lines
1.8 KiB
Matlab
function tx_signal_curve(wh,options)
|
|
arguments
|
|
wh
|
|
options.DisplayName = '';
|
|
end
|
|
|
|
M = wh.parameter.M.values(1);
|
|
datarate = wh.parameter.datarate.values(1);
|
|
sirs = wh.parameter.sir.values(1);
|
|
mpi_len = wh.parameter.mpi_pathlen.values(1);
|
|
laser_linewidths = wh.parameter.laser_linewidth.values(1);
|
|
pn_key = wh.parameter.pn_key.values;
|
|
vbias_rel = wh.parameter.vbias_rel.values;
|
|
rop = wh.parameter.rop.values(1);
|
|
clipfactor = wh.parameter.clipfactor.values;
|
|
rrcalpha = wh.parameter.rrcalpha.values(1);
|
|
|
|
% Create the initial plot
|
|
figure(4);
|
|
cols = linspecer(numel(vbias_rel));
|
|
cnt = 0;
|
|
|
|
for vb = vbias_rel
|
|
|
|
cnt = cnt+1;
|
|
bers(:) = wh.getStoValue('ber',M,datarate,sirs,mpi_len,laser_linewidths,pn_key,vb,rop,clipfactor, rrcalpha);
|
|
ers(:) = wh.getStoValue('er',M,datarate,sirs,mpi_len,laser_linewidths,pn_key,vb,rop,clipfactor, rrcalpha);
|
|
dn = ['M: ',num2str(M),'; Rate: ',num2str(datarate),'; SIR ',num2str(sirs), 'dB; lw: ',num2str(laser_linewidths.*1e-6),' MHz'];
|
|
|
|
hold on; % Retain the plot so new points can be added without complete redraw
|
|
% scatter(clipfactor,bers,"LineWidth",1,"Marker",".","DisplayName",string(dn),"MarkerEdgeColor",cols(cnt,:),'HandleVisibility','off');
|
|
plot(clipfactor,bers,"LineWidth",1,"Marker","x",'LineStyle','--',"DisplayName",['Vbias factor: ',num2str(vb)],"Color",cols(cnt,:));
|
|
yline(3.8e-3,'DisplayName','HD-FEC','HandleVisibility','off');
|
|
set(gca,'yscale','log');
|
|
grid on;
|
|
ylim([1e-5,5e-1])
|
|
|
|
xlabel('Clip Factor');
|
|
ylabel('Bit Error Rate (BER)');
|
|
title(['Bit Error Rate vs. Clip Factor: ',dn]);
|
|
|
|
legend
|
|
end
|
|
|
|
|
|
% figure(10101)
|
|
% y = vbias_rel;
|
|
% x = clipfactor;
|
|
% [X,Y] = meshgrid(x,y);
|
|
% Z = bers;
|
|
% contourf(X,Y,Z,30,'LineStyle','none');
|
|
|
|
end
|