new plots for Diss. Mostly AI gen. Few changes in actual codebase

This commit is contained in:
Silas Oettinghaus
2026-07-30 08:35:45 +02:00
parent 125d8508ca
commit 7a9deaeb0c
62 changed files with 6171 additions and 630 deletions

View File

@@ -403,7 +403,7 @@ classdef Signal
% Divide by 2*pi for the f/fs axis where Nyquist is 0.5.
end
p_lin = movmean(p_lin,10);
p_lin = movmean(p_lin,20);
if options.normalizeTo0dB
p_lin = p_lin ./ max(p_lin);
@@ -526,10 +526,10 @@ classdef Signal
end
y_margin = 0.05 * y_range;
ylim([y_min - y_margin, y_max + y_margin]);
yticks(-200:10:200);
grid on;
ylim([y_min - y_margin, y_max + y_margin]);
yticks(-200:10:200);
grid on;
% Add legend if not already present
if isempty(get(gca, 'Legend'))
@@ -1042,34 +1042,23 @@ classdef Signal
if isempty(finite_eye)
finite_eye = sig(isfinite(sig));
end
amp_min = min(finite_eye);
amp_max = max(finite_eye);
amp_center = (amp_max + amp_min) / 2;
amp_span = amp_max - amp_min;
if amp_span == 0
amp_span = max(abs(amp_center),1);
end
amp_margin = 0.08 * amp_span;
maxA = amp_center + amp_span/2 + amp_margin;
minA = amp_center - amp_span/2 - amp_margin;
if ~isa(obj,'Opticalsignal') && minA < 0 && maxA > 0
targetStep = max(abs([minA maxA])) / 2;
if targetStep > 0
stepMagnitude = 10^floor(log10(targetStep));
normalizedStep = targetStep / stepMagnitude;
if normalizedStep <= 1
tickStep = stepMagnitude;
elseif normalizedStep <= 2
tickStep = 2 * stepMagnitude;
elseif normalizedStep <= 5
tickStep = 5 * stepMagnitude;
else
tickStep = 10 * stepMagnitude;
end
axisLimit = 2 * tickStep;
maxA = axisLimit;
minA = -axisLimit;
if isa(obj,'Opticalsignal')
amp_min = min(finite_eye);
amp_max = max(finite_eye);
amp_center = (amp_max + amp_min) / 2;
amp_span = amp_max - amp_min;
if amp_span == 0
amp_span = max(abs(amp_center),1);
end
amp_margin = 0.08 * amp_span;
maxA = amp_center + amp_span/2 + amp_margin;
minA = amp_center - amp_span/2 - amp_margin;
else
% Normalized electrical/digital eye display range.
% Samples outside this range are clipped in the
% histogram image so all eye plots use the same scale.
minA = -3;
maxA = 3;
end
% maxA = 0.12;
@@ -1109,13 +1098,13 @@ classdef Signal
max_ = abs(max(obj.signal(100:end-100)).^2);
elseif isa(obj,'Electricalsignal')
title(['Electrical Eye ',options.displayname])
ylabel("Voltage in V");
ylabel("Normalized amplitude");
yTickValues = linspace(maxA,minA,5);
min_ = min(obj.signal(100:end-100));
max_ = abs(max(obj.signal(100:end-100)));
else
title(['Digital Eye ',options.displayname])
ylabel("Digital Signal Amplitude");
ylabel("Normalized amplitude");
yTickValues = linspace(maxA,minA,5);
min_ = min(obj.signal(100:end-100));
max_ = abs(max(obj.signal(100:end-100)));