1 function plotLIV( current,voltage,power_dB, Ibias, Vpp )
4 arrowColor = [1 1 1]./2.5;
5 % power to natural units
6 power_mW = 10.^(power_dB./10);
7 % Vpp, Ipp and ER calculations
8 [nul pos] =min(abs(current-Ibias));
10 Vextremes = [Vbias-Vpp/2 Vbias+Vpp/2];
11 [nul pos1] =min(abs(voltage-Vextremes(1)));
12 [nul pos2] =min(abs(voltage-Vextremes(2)));
13 Iextremes = [current(pos1) current(pos2)];
14 Pextremes = [power_mW(pos1) power_mW(pos2)];
15 Pbias = power_mW(pos);
17 ER = 10*log10(Pextremes(2)/Pextremes(1));
21 [AX,H1,H2] = plotyy(current,power_mW,current,voltage, 'plot');
23 stem(Ibias,Pbias,'LineStyle', '--', 'color', [1 1 1]./1.6, 'MarkerFace', blue, 'MarkerEdge', blue)
24 gridxy(Iextremes,[] , 'LineStyle', '--', 'color', blue)
26 arrow([Iextremes(1) Pextremes(1)], [Iextremes(2) Pextremes(1)], 'Ends', 'both','EdgeColor', arrowColor, 'FaceColor', arrowColor)
27 arrow([Iextremes(2) Pextremes(1)], [Iextremes(2) Pextremes(2)], 'Ends', 'both','EdgeColor', arrowColor, 'FaceColor', arrowColor)
29 text(Ibias,Pbias,'Bias point', 'VerticalAlignment', 'bottom','HorizontalAlignment', 'right')
30 text(Ibias,Pextremes(1), [num2str(Vpp,3) ' Vpp'], 'VerticalAlignment', 'bottom','HorizontalAlignment', 'center')
31 text(Iextremes(2),mean(Pextremes), ['ER = ' num2str(ER,3) ' dB'], 'VerticalAlignment', 'bottom','HorizontalAlignment', 'center', 'rotation', 90)
33 set(get(AX(1),'Xlabel'),'String','Current (mA)')
34 set(get(AX(1),'Ylabel'),'String','Optical power (mW)','Color', blue)
35 set(AX(1),'YColor', blue)
36 set(AX(2),'YColor', red)
37 set(get(AX(2),'Ylabel'),'String','Voltage (V)', 'color', red)
38 set(H1,'LineStyle','-', 'color', blue, 'LineWidth', linewidth)
39 set(H2,'LineStyle','-.', 'color', red_soft, 'LineWidth', linewidth)