MLSE has some more class settings

DSP auswertung weiter geschrieben
This commit is contained in:
Silas Oettinghaus
2025-10-08 09:51:47 +02:00
parent a0ae47a2a0
commit 99898da519
6 changed files with 438 additions and 11 deletions

View File

@@ -6,6 +6,10 @@ classdef MLSE < handle
DIR
trellis_states
duobinary_output
trellis_state_mode
trellis_exclusion
debug
scale_mode
end
methods (Access=public)
@@ -19,7 +23,10 @@ classdef MLSE < handle
options.DIR double = [1];
options.trellis_states double = [-3 -1 1 3];
options.duobinary_output logical = false;
options.trellis_state_mode = 2;
options.trellis_exclusion = 0;
options.scale_mode = 2;
options.debug = 0;
end
%
@@ -33,6 +40,12 @@ classdef MLSE < handle
function [signalclass_hd,LLR,GMI] = process(obj,signalclass,ref_symbolclass)
arguments
obj
signalclass
ref_symbolclass
end
data_in = signalclass.signal;
shape_in = size(data_in);
data_ref = ref_symbolclass.signal;
@@ -54,18 +67,25 @@ classdef MLSE < handle
function [VITERBI_ESTIMATION_SYMBOLS,LLR_maxlogmap,GMI] = process_(obj,data_in,data_ref)
debug = 1;
arguments
obj
data_in
data_ref
end
trellis_state_mode = 0; % General: States should match the target states of the prev. EQ (EQ's job was to reduce the error between signal and the target)
debug = obj.debug;
trellis_state_mode = obj.trellis_state_mode; % General: States should match the target states of the prev. EQ (EQ's job was to reduce the error between signal and the target)
% 0 = use provided states (MUST provide the correct states);
% 1 = normalize to = 1 rms;
% 2 = use target symbols;
% 3 = use statistical levels
% 3 analyzes avg of rx signal levels - can help with nonlinear impairments
trellis_exclusion = 0; % PAM-6 only (only if data is NOT precoded!)
trellis_exclusion = obj.trellis_exclusion; % PAM-6 only (only if data is NOT precoded!)
scale_mode = 0; % scale_mode:
scale_mode = obj.scale_mode; % scale_mode:
% 0 = no scaling,
% 1 = RMSscale MODEL,
% 2 = MMSE/time-corrscale MODEL,