ChannelFreqResp optimized and compared to move-it

minimal lab setup
This commit is contained in:
Silas Labor Zizou
2024-10-07 08:19:56 +02:00
parent 8577f5f6f4
commit 135d0e7cfc
16 changed files with 369 additions and 146 deletions

View File

@@ -110,6 +110,9 @@ classdef EQ
[signalclass_in.signal,error_log] = obj.process_(signalclass_in.signal', reference_signalclass_in.signal');
signalclass_in.signal = signalclass_in.signal';
signalclass_in.fs = reference_signalclass_in.fs;
% append to logbook
lbdesc = ['EQ '];
signalclass_in = signalclass_in.logbookentry(lbdesc);

View File

@@ -124,6 +124,7 @@ classdef FFE_adaptive_decision < handle
d_hat(symbol,1) = obj.constellation(symbol_idx);
end
y_buffer(symbol_idx,1) = y(symbol);
y_buffer(symbol_idx,:) = circshift(y_buffer(symbol_idx,:),1);

View File

@@ -148,18 +148,19 @@ classdef VNLE < handle
y(symbol,1) = obj.e.' * x_in; % Calculating output of LMS __ * |
if training
err(symbol) = y(symbol) - d(symbol); % Instantaneous error
err = y(symbol) - d(symbol); % Instantaneous error
else
[~,symbol_idx] = min(abs(y(symbol) - obj.constellation)); % decision for closest constellation point
d_hat(symbol,1) = obj.constellation(symbol_idx);
err(symbol) = y(symbol) - d_hat(symbol); % Instantaneous error
err = y(symbol) - d_hat(symbol); % Instantaneous error
end
if ~all(mu==0,'all') %mu has not only zeros
obj.e = obj.e - (mu * err(symbol) * x_in) ; % Weight update rule of LMS
% obj.e = obj.e - (mu * err * x_in) ; % Weight update rule of LMS
obj.e = obj.e - ( (mu * x_in) * err ) ; % Weight update rule of LMS
else
normalizationfactor = (x_in.' * x_in);
obj.e = obj.e - err(symbol) * x_in / normalizationfactor; % Weight update rule of NLMS
obj.e = obj.e - err * x_in / normalizationfactor; % Weight update rule of NLMS
end
if mod(sample,100) == 1 && showviz
@@ -173,7 +174,7 @@ classdef VNLE < handle
drawnow;
end
obj.error(epoch,symbol) = err(symbol) * err(symbol)'; % Instantaneous square error
obj.error(epoch,symbol) = err * err'; % Instantaneous square error
end
end