Hoffice push
This commit is contained in:
@@ -11,27 +11,17 @@ classdef Duobinary
|
||||
|
||||
function obj = Duobinary()
|
||||
%NAME Construct an instance of this class
|
||||
% Detailed explanation goes here
|
||||
|
||||
arguments
|
||||
|
||||
end
|
||||
|
||||
% %
|
||||
% fn = fieldnames(options);
|
||||
% for n = 1:numel(fn)
|
||||
% try
|
||||
% obj.(fn{n}) = options.(fn{n});
|
||||
% end
|
||||
% end
|
||||
|
||||
% do more stuff
|
||||
|
||||
end
|
||||
|
||||
function signalclass = precode(~,signalclass)
|
||||
function signal = precode(~,signal)
|
||||
|
||||
if isa(signal,'Signal')
|
||||
data = signal.signal;
|
||||
else
|
||||
data = signal;
|
||||
end
|
||||
|
||||
data = signalclass.signal;
|
||||
u = unique(data);
|
||||
M = numel(u);
|
||||
|
||||
@@ -66,21 +56,34 @@ classdef Duobinary
|
||||
bk = bk + b;
|
||||
|
||||
if M == 4
|
||||
bk = bk ./ sqrt(5);
|
||||
bk = bk ./ sqrt(5);
|
||||
elseif M == 6
|
||||
bk = bk ./ sqrt(10);
|
||||
elseif M == 8
|
||||
bk = bk ./ sqrt(21);
|
||||
bk = bk ./ sqrt(21);
|
||||
end
|
||||
|
||||
assert(isequal(unique(bk),u),'Check Duobinary Precoding'); %seems the signal is not the same as before
|
||||
|
||||
|
||||
if isa(signal,'Signal')
|
||||
signal.signal = bk;
|
||||
else
|
||||
signal = bk;
|
||||
end
|
||||
signalclass.signal = bk;
|
||||
|
||||
assert(isequal(unique(signalclass.signal),u),'Check Duobinary Precoding'); %seems the signal is not the same as before
|
||||
|
||||
end
|
||||
|
||||
function signalclass = encode(~,signalclass)
|
||||
|
||||
data = signalclass.signal;
|
||||
function signal = encode(~,signal)
|
||||
|
||||
if isa(signal,'Signal')
|
||||
data = signal.signal;
|
||||
else
|
||||
data = signal;
|
||||
end
|
||||
|
||||
data = data./rms(data);
|
||||
|
||||
u = unique(data);
|
||||
M = numel(u);
|
||||
|
||||
@@ -102,7 +105,7 @@ classdef Duobinary
|
||||
data = data ./ 2;
|
||||
|
||||
assert(isequal((0:M-1)',unique(data)),'Check Duobinary Precoding'); %seems the signal is not unipolar
|
||||
|
||||
|
||||
% duobinary coding (1+D)
|
||||
coeff = [1,1];
|
||||
|
||||
@@ -119,7 +122,11 @@ classdef Duobinary
|
||||
data = data ./ sqrt(10.5); % 15-level constellation weighted with probability after DB code i.e.
|
||||
end
|
||||
|
||||
signalclass.signal = data;
|
||||
if isa(signal,'Signal')
|
||||
signal.signal = data;
|
||||
else
|
||||
signal = data;
|
||||
end
|
||||
|
||||
% Code to evaluate the s in sqrt(s):
|
||||
% M=6;
|
||||
@@ -138,7 +145,7 @@ classdef Duobinary
|
||||
data = signalclass.signal;
|
||||
u = unique(data);
|
||||
I = numel(u); %number of duobinary coded const. points
|
||||
M = (I+1)/2; %PAM-M order
|
||||
M = (I+1)/2; %PAM-M order
|
||||
|
||||
%make unipolar
|
||||
if I == 7
|
||||
@@ -166,11 +173,11 @@ classdef Duobinary
|
||||
data = data - round(mean(data));
|
||||
|
||||
if M == 4
|
||||
data = data ./ sqrt(5);
|
||||
data = data ./ sqrt(5);
|
||||
elseif M == 6
|
||||
data = data ./ sqrt(10);
|
||||
elseif M == 8
|
||||
data = data ./ sqrt(21);
|
||||
data = data ./ sqrt(21);
|
||||
end
|
||||
signalclass.signal = data;
|
||||
|
||||
@@ -180,7 +187,7 @@ classdef Duobinary
|
||||
data = signalclass.signal;
|
||||
u = unique(data);
|
||||
I = numel(u); %number of duobinary coded const. points
|
||||
M = (I+1)/2; %PAM-M order
|
||||
M = (I+1)/2; %PAM-M order
|
||||
|
||||
%make unipolar
|
||||
if I == 7
|
||||
@@ -206,11 +213,11 @@ classdef Duobinary
|
||||
%%FALSCH!
|
||||
for k = 1:length(data)-1
|
||||
|
||||
d_ = data(k+1) - data_out(k);
|
||||
|
||||
[~,b] = min(abs(d_-[0:M-1]));
|
||||
d_ = data(k+1) - data_out(k);
|
||||
|
||||
data_out(k+1) = const(b);
|
||||
[~,b] = min(abs(d_-[0:M-1]));
|
||||
|
||||
data_out(k+1) = const(b);
|
||||
|
||||
end
|
||||
|
||||
@@ -219,13 +226,13 @@ classdef Duobinary
|
||||
data_out = data_out - round(mean(data_out));
|
||||
|
||||
if M == 4
|
||||
data_out = data_out ./ sqrt(5);
|
||||
data_out = data_out ./ sqrt(5);
|
||||
elseif M == 6
|
||||
data_out = data_out ./ sqrt(10);
|
||||
elseif M == 8
|
||||
data_out = data_out ./ sqrt(21);
|
||||
data_out = data_out ./ sqrt(21);
|
||||
end
|
||||
|
||||
|
||||
signalclass.signal = data_out;
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user