stuff from 400G analysis (project deliv 01)

This commit is contained in:
Silas Oettinghaus
2025-03-10 12:48:10 +01:00
parent affdb4ad6f
commit 77ac44536d
15 changed files with 787 additions and 207 deletions

View File

@@ -26,7 +26,9 @@ classdef Duobinary
M = numel(u);
%make unipolar
if M == 4
if M == 2
data = data;
elseif M == 4
data = data .* sqrt(5);
elseif M == 6
data = data .* sqrt(10);
@@ -59,7 +61,9 @@ classdef Duobinary
bk = bk .* 2;
bk = bk + b;
if M == 4
if M == 2
bk = bk;
elseif M == 4
bk = bk ./ sqrt(5);
elseif M == 6
bk = bk ./ sqrt(10);
@@ -100,7 +104,9 @@ classdef Duobinary
end
%make unipolar
if options.M == 4
if options.M == 2
data = data;
elseif options.M == 4
data = data .* sqrt(5);
elseif options.M == 6
data = data .* sqrt(10);
@@ -140,7 +146,9 @@ classdef Duobinary
mean_power = sum((unique_points .^ 2) .* probabilities);
scaling_factor = sqrt(mean_power);
if options.M == 4
if options.M == 2
data = data ./ sqrt(0.5);
elseif options.M == 4
data = data ./ sqrt(2.5); % 7-level constellation weighted with probability after DB code i.e. mean([-3 3 -2 -2 2 2 -1 -1 -1 1 1 1 0 0 0 0].^2) = 2.5 --> sqrt(2.5) == rms(constellation)
elseif options.M == 6
data = data ./ sqrt(5.8);
@@ -186,7 +194,9 @@ classdef Duobinary
end
%make unipolar
if I == 7 || I == 6
if I == 3
data = data .* 0.5;
elseif I == 7 || I == 6
data = data .* sqrt(2.5);
elseif I == 11
data = data .* sqrt(5.8);
@@ -206,7 +216,9 @@ classdef Duobinary
data = data .* 2;
data = data - round(mean(data));
if M == 4
if M == 2
data = data;
elseif M == 4
data = data ./ sqrt(5);
elseif M == 6
data = data ./ sqrt(10);