Now updated for 2 SPS! Works directly on the 2sps Scope output
This commit is contained in:
@@ -102,7 +102,7 @@ classdef ML_MLSE < handle
|
||||
|
||||
% --- Parameters
|
||||
obj.S = numel(unique(D.signal)); % alphabet size
|
||||
obj.Nf = obj.order; % filter length
|
||||
obj.Nf = obj.order*obj.sps; % filter length
|
||||
% obj.delta = 3;%ceil(obj.Nf/2); % delay parameter
|
||||
obj.nStates = obj.S^obj.L;
|
||||
obj.nFeasible = obj.nStates*obj.S;
|
||||
@@ -195,8 +195,8 @@ classdef ML_MLSE < handle
|
||||
k = symbol;
|
||||
|
||||
% --- Build Δ-delayed observation window y_k
|
||||
i1 = k - obj.Nf + 1 + obj.delta;
|
||||
i2 = k + obj.delta;
|
||||
i1 = sample - obj.Nf + 1 + obj.delta;
|
||||
i2 = sample + obj.delta;
|
||||
buf = x(max(1,i1):min(length(x),i2));
|
||||
padL = max(0,1 - i1);
|
||||
padR = max(0,i2 - length(x));
|
||||
@@ -327,15 +327,19 @@ classdef ML_MLSE < handle
|
||||
end
|
||||
|
||||
[~, s_end] = max(pm);
|
||||
viterbi_path = zeros(N,1,'uint32');
|
||||
viterbi_path(N) = s_end;
|
||||
for n = N:-1:2
|
||||
viterbi_path = zeros(symbol,1,'uint32');
|
||||
viterbi_path(symbol) = s_end;
|
||||
for n = symbol:-1:2
|
||||
viterbi_path(n-1) = pred(n, viterbi_path(n));
|
||||
end
|
||||
|
||||
y_vit = obj.first_sym(viterbi_path);
|
||||
y = obj.first_sym(viterbi_path);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
if 1 %debug || training
|
||||
err = sum(y ~= d(1:length(y)));
|
||||
ser = err./length(y);
|
||||
@@ -354,7 +358,7 @@ classdef ML_MLSE < handle
|
||||
|
||||
subplot(2,2,4);
|
||||
% scatter(1:N,pm_sto,1,'.')
|
||||
plot(1:N,pm_sto)
|
||||
plot(1:symbol,pm_sto)
|
||||
title('Path Metric Winners')
|
||||
end
|
||||
|
||||
|
||||
Reference in New Issue
Block a user