Many changes
This commit is contained in:
@@ -23,7 +23,6 @@ classdef PAMmapper
|
||||
|
||||
obj.scaling = rms(obj.get_levels());
|
||||
|
||||
|
||||
end
|
||||
|
||||
function out = map(obj,signal_in)
|
||||
@@ -41,11 +40,25 @@ classdef PAMmapper
|
||||
|
||||
end
|
||||
|
||||
function signalclass_out = demap(obj,signalclass_in)
|
||||
signalclass_in.signal = obj.demap_(signalclass_in.signal);
|
||||
lbdesc = ['Demap PAM ',num2str(obj.M),' symbols to bit stream'];
|
||||
signalclass_in = signalclass_in.logbookentry(lbdesc,obj);
|
||||
signalclass_out = signalclass_in;
|
||||
function signal_out = demap(obj,signal_in)
|
||||
issignalclass = 0;
|
||||
|
||||
if isa(signal_in,'Signal')
|
||||
signalclass = signal_in;
|
||||
signal_in = signal_in.signal;
|
||||
issignalclass = 1;
|
||||
end
|
||||
|
||||
signal_out = obj.demap_(signal_in);
|
||||
|
||||
if issignalclass
|
||||
lbdesc = ['Demap PAM ',num2str(obj.M),' symbols to bit stream'];
|
||||
signal_in = signalclass;
|
||||
signal_in = signal_in.logbookentry(lbdesc,obj);
|
||||
signal_in.signal = signal_out;
|
||||
signal_out = signal_in;
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
function pam_sig = map_(obj,bitpattern)
|
||||
@@ -156,6 +169,8 @@ classdef PAMmapper
|
||||
case 6 %PAM 6
|
||||
|
||||
thres = [-3 5;-1 5;-3 -5;-1 -5;-5 3;-5 1;-5 -3;-5 -1;-1 3;-1 1;-1 -3;-1 -1;-3 3;-3 1;-3 -3;-3 -1;3 5;1 5;3 -5;1 -5;5 3;5 1;5 -3;5 -1;1 3;1 1;1 -3;1 -1;3 3;3 1;3 -3;3 -1];
|
||||
% thres = [-4 -2 0 2 4];
|
||||
% thres = thres ./ sqrt(10);
|
||||
|
||||
case 8
|
||||
% 8-ASK
|
||||
@@ -194,7 +209,6 @@ classdef PAMmapper
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
function [data_out] = demap_(obj,data_in)
|
||||
data_in= data_in';
|
||||
if obj.M ~= 6
|
||||
@@ -309,14 +323,35 @@ classdef PAMmapper
|
||||
end
|
||||
|
||||
function [Signal_out] = quantize(obj,Signal_in)
|
||||
|
||||
constellation = obj.get_levels();
|
||||
constellation = constellation ./ rms(constellation);
|
||||
Signal_out = Signal_in;
|
||||
dist = abs(Signal_in.signal - constellation);
|
||||
[~,symbol_idx] = min(dist,[],2); % decision for closest constellation point
|
||||
Signal_out.signal = constellation(symbol_idx);
|
||||
|
||||
Signal_out.signal = reshape(Signal_out.signal,size(Signal_in.signal));
|
||||
issignalclass = 0;
|
||||
if isa(Signal_in,'Signal')
|
||||
issignalclass = 1;
|
||||
Sig_class = Signal_in;
|
||||
Signal_in = Signal_in.signal;
|
||||
end
|
||||
|
||||
[~,high_dim_sig] = max(size(Signal_in));
|
||||
[~,high_dim_const] = max(size(constellation));
|
||||
|
||||
if high_dim_sig == high_dim_const
|
||||
Signal_in = Signal_in';
|
||||
end
|
||||
|
||||
dist = abs(Signal_in - constellation);
|
||||
[~,symbol_idx] = min(dist,[],2); % decision for closest constellation point
|
||||
Signal_out = constellation(symbol_idx);
|
||||
Signal_out = reshape(Signal_out,size(Signal_in));
|
||||
|
||||
if issignalclass
|
||||
Sig_class.signal = Signal_out;
|
||||
Signal_out = Sig_class;
|
||||
end
|
||||
|
||||
|
||||
|
||||
end
|
||||
|
||||
|
||||
@@ -4,6 +4,8 @@ classdef Pulseformer
|
||||
|
||||
properties(Access=public)
|
||||
fdac
|
||||
end
|
||||
properties(Access=private)
|
||||
fsym
|
||||
pulse
|
||||
pulselength
|
||||
|
||||
Reference in New Issue
Block a user