Füge PRMS-Fehlerbehandlung hinzu und implementiere Partialresponse-Kodierung

This commit is contained in:
Silas Oettinghaus
2026-04-23 21:56:47 +02:00
parent 456fd02186
commit 952178341e
3 changed files with 244 additions and 12 deletions

View File

@@ -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)