Füge PRMS-Fehlerbehandlung hinzu und implementiere Partialresponse-Kodierung
This commit is contained in:
@@ -282,18 +282,29 @@ classdef Signalgenerator
|
||||
otherwise
|
||||
length = 1024;
|
||||
end
|
||||
|
||||
if obj.form == signalform.prms && length > 2^20
|
||||
error("Signalgenerator:AutoLengthTooLarge", ...
|
||||
"Auto-derived PRMS length would be %d samples, which is too large for an implicit default. Pass an explicit length if you really want a longer sequence.", ...
|
||||
length);
|
||||
end
|
||||
end
|
||||
|
||||
function prms_order = internal_prms_order(obj)
|
||||
if ~isempty(obj.M)
|
||||
bits_per_symbol = obj.prms_bits_per_symbol();
|
||||
|
||||
prms_order = max(1, floor(obj.order / bits_per_symbol));
|
||||
end
|
||||
|
||||
function bits_per_symbol = prms_bits_per_symbol(obj)
|
||||
if (~isempty(obj.M) && obj.M == 6) || (isempty(obj.M) && obj.dimension == 5)
|
||||
% PAM-6 mapping in this repo consumes 5 bits for 2 symbols.
|
||||
bits_per_symbol = 2.5;
|
||||
elseif ~isempty(obj.M)
|
||||
bits_per_symbol = log2(obj.M);
|
||||
elseif obj.dimension == 5
|
||||
bits_per_symbol = log2(6);
|
||||
else
|
||||
bits_per_symbol = obj.dimension;
|
||||
end
|
||||
|
||||
prms_order = max(1, floor(obj.order / bits_per_symbol));
|
||||
end
|
||||
|
||||
function dimension = mapper_bit_dimension(obj)
|
||||
|
||||
Reference in New Issue
Block a user