Update April
This commit is contained in:
@@ -19,10 +19,16 @@ classdef PAMmapper
|
||||
|
||||
end
|
||||
|
||||
function signalclass_out = map(obj,signalclass_in)
|
||||
signalclass_in.signal = obj.map_(signalclass_in.signal);
|
||||
signalclass_in = signalclass_in.logbookentry();
|
||||
signalclass_out = signalclass_in;
|
||||
function out = map(obj,signal_in)
|
||||
|
||||
if isa(signal_in,'Signal')
|
||||
signal_in.signal = obj.map_(signal_in.signal);
|
||||
signal_in = signal_in.logbookentry();
|
||||
out = signal_in;
|
||||
else
|
||||
out = signal_in;
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
function signalclass_out = demap(obj,signalclass_in)
|
||||
@@ -157,7 +163,7 @@ classdef PAMmapper
|
||||
case 2
|
||||
% 4-ASK
|
||||
|
||||
data_out=[comp_real(:,:,2); ones(s1,s2)-comp_real(:,:,1)+comp_real(:,:,3)];
|
||||
data_out=[comp_real(:,:,2); ones(s1,s2) - comp_real(:,:,1) + comp_real(:,:,3)];
|
||||
|
||||
|
||||
case 3
|
||||
@@ -179,16 +185,43 @@ classdef PAMmapper
|
||||
|
||||
end
|
||||
|
||||
function [data_out] = decide_pamlevel(obj,data_in)
|
||||
function [data_out] = decide_pamlevel(obj,data_in,options)
|
||||
arguments
|
||||
obj
|
||||
data_in Signal
|
||||
options.symbol_levels = []
|
||||
end
|
||||
|
||||
%A) normally return the preproduct of the decision
|
||||
a = squeeze(repmat(real(data_in.signal),[1 1 length(obj.thresholds)])); %Eingangssignal in 3 spalten
|
||||
b = squeeze(repmat(reshape(obj.thresholds(:).',[1 1 length(obj.thresholds)]),[1 length(data_in.signal) 1])); %Threshold in 3 Spalten
|
||||
comp_real = a > b; %check for each symbol/ sampling if it exeeds the obj.thresholdseshold 1, 2 or 3
|
||||
|
||||
data_out = data_in;
|
||||
data_out.signal = sum(comp_real,2);
|
||||
|
||||
%Option: return the actual level values/ just map onto given
|
||||
%symbol levels
|
||||
if ~isempty(options.symbol_levels)
|
||||
data_out.signal = options.symbol_levels(data_out.signal+1);
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
data_out = sum(comp_real,2);
|
||||
function [out] = separate_pamlevels(obj,data_in)
|
||||
|
||||
%A) normally return the preproduct of the decision
|
||||
a = squeeze(repmat(real(data_in.signal),[1 1 length(obj.thresholds)])); %Eingangssignal in 3 spalten
|
||||
b = squeeze(repmat(reshape(obj.thresholds(:).',[1 1 length(obj.thresholds)]),[1 length(data_in.signal) 1])); %Threshold in 3 Spalten
|
||||
comp_real = a > b; %check for each symbol/ sampling if it exeeds the obj.thresholdseshold 1, 2 or 3
|
||||
comp_real_sum = sum(comp_real,2);
|
||||
|
||||
%data_out = (data_out*2)-3;
|
||||
out = NaN(length(data_in),length(obj.thresholds)+1);
|
||||
|
||||
for idx = 1:length(data_in)
|
||||
out(idx,comp_real_sum(idx)+1) = data_in.signal(idx);
|
||||
end
|
||||
|
||||
%data_out = pam_level_decision .* 1/sqrt(5);
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user