7 % Obtain data and plot limits
9 ylim_time = 20*[-var(y) var(y)] + mean(y);
10 ylim_time = 1.1*[min(y) max(y)];
11 % Calculate sampling point
12 srx = y(1:end-rem(length(y),Nss));
15 y_opt(k) = sum( abs( srx(k:Nss:end) ).^2);
17 [nul,idx] = max(y_opt);
19 srx = srx(idx:Nss:end);
20 srx = srx(:).'*modnorm(srx, 'avpow' ,1);
24 set(gcf, 'Units', 'pixels')
32 scrsz = get(0,'ScreenSize');
33 %set(gcf,'Position',[scrsz(3)/2 scrsz(4)/2-200 width*50 height*50])
34 set(gcf,'OuterPosition',[1 scrsz(4)*(1-ratioH) scrsz(3)*ratioW scrsz(4)*ratioH ])
42 [ f, spectrum ] =
spectra(y, Fs, 0);
43 s = 10*log10(spectrum.*conj(spectrum)*1e3);
44 sm = smooth(s,length(s)/100);
46 BW = find(sm>max(sm(10:end))-3);
48 patchline(f*1e-9, s, 'edgecolor', blue, 'edgealpha',0.05 )
50 plot(f*1e-9, sm, 'color', red, 'LineWidth',2)
51 gridxy(BW*1e-9, (max(sm)-3), 'LineStyle', '--', 'color', [1 1 1]./1.5)
53 ylim([mean(s) max(s(100:end))])
58 title(['Rs = ' num2str(Fs/Nss*1e-9, '%.0f') ' Gbaud | Fs = ' num2str(Fs*1e-9, '%.0f') ' GSa/s | BW = ' num2str(BW*1e-9, '%.2f') ' GHz' ])
59 set(gca, 'LooseInset', get(gca, 'TightInset'));
63 nsymb = length(y)/Nss;
64 NumberOfStoredTraces=2^11;
66 if (nsymb < NumberOfStoredTraces)
67 NumberOfStoredTraces = nsymb;
69 y_eye=y(1:Nss*NumberOfStoredTraces);
73 heye(1) = subplot(4,3,4);
76 y_eyeI = reshape(real(y_eye),Nss*NumberOfEyes,length(y_eye)/Nss/NumberOfEyes);
77 t_eye=(0:(Nss*NumberOfEyes-1))/Fs*1e12;
78 for e=1:size(y_eyeI,2)
79 patchline(t_eye, y_eyeI(:,e), 'edgecolor', blue, 'edgealpha',0.1 )
83 y_optPlot = (y_opt-mean(y_opt));
84 y_optPlot = y_optPlot/max(y_optPlot)*std(y_eye);
85 y_optPlot = y_optPlot + mean(y_eye);
86 y_optPlot = repmat(y_optPlot(:),NumberOfEyes,1);
87 plot(t_eye, y_optPlot, '--', 'color', red)
88 gridxy((Nss+idx-1)/Fs*1e12, [], 'LineStyle', '--', 'color', [1 1 1]./1.5)
95 heye(2) = subplot(4,3,6);
97 y_eyeQ = reshape(imag(y_eye),Nss*NumberOfEyes,length(y_eye)/Nss/NumberOfEyes);
98 for e=1:size(y_eyeQ,2)
99 patchline(t_eye, y_eyeQ(:,e), 'edgecolor', blue, 'edgealpha',0.1 )
102 gridxy((Nss+idx-1)/Fs*1e12, [], 'LineStyle', '--', 'color', [1 1 1]./1.5)
109 %% Plot constellation
112 plot(real(srx), imag(srx), '.', 'color', blue, 'MarkerSize',3);
114 % Plot clusters centroids
117 set(gca, 'LooseInset', get(gca, 'TightInset'));
120 %% Plot time domain signals
123 plot(real(y),'color', blue);
129 htime(1) = subplot(4,3,[7 8 9]);
130 plot(real(y),'color', blue)
136 htime(2) = subplot(4,3,[10 11 12]);
137 plot(imag(y),'color', blue)
142 linkaxes(htime, 'x');
145 srx = y(:).'*modnorm(y, 'avpow' ,1);
148 set(gcf, 'Units', 'pixels')
156 scrsz = get(0,'ScreenSize');
157 %set(gcf,'Position',[scrsz(3)/2 scrsz(4)/2-200 width*50 height*50])
158 set(gcf,'OuterPosition',[1 scrsz(4)*(1-ratioH) scrsz(3)*ratioW scrsz(4)*ratioH ])
160 %% plot Constellation
163 plot(real(srx), imag(srx), '.', 'color', blue, 'MarkerSize',4);
168 plot(srx,'color', blue)
171 plot(real(srx),'color', blue)
173 xlim([1 length(srx)])
176 plot(real(srx),'color', blue)
178 xlim([1 length(srx)])
function plotSignal(in y, in Nss, in Fs)
Plot signal_interface using options based on signal properties.
function spectra(in y, in Fs, in plotS)
Returns the single-sided amplitude spectrum and plots (optional)