Add new signal generator method that only creates the PRBS

This commit is contained in:
2026-04-21 14:20:48 +02:00
parent 20b23dc37e
commit 0ef8129a2c
5 changed files with 975 additions and 5 deletions

View File

@@ -7,6 +7,11 @@ classdef Signalgenerator_test < IMDDTestCase
testCase.verifyEqual(gen.length, 1024);
testCase.verifyEqual(gen.fs, 1000);
testCase.verifyEqual(gen.fsig, 50);
testCase.verifyEqual(gen.dimension, 1);
testCase.verifyEqual(gen.order, 7);
testCase.verifyEqual(gen.randkey, 0);
testCase.verifyEqual(gen.skip, 0);
testCase.verifyFalse(gen.bruijn);
end
function buildSignalProducesExpectedSineWave(testCase)
@@ -38,5 +43,79 @@ classdef Signalgenerator_test < IMDDTestCase
testCase.verifyEqual(out.signal, [0 1 0 -1], "AbsTol", 1e-12);
testCase.verifyEqual(height(out.logbook), 1);
end
function randomDataIsDeterministicAndColumnShaped(testCase)
gen = Signalgenerator( ...
"form", signalform.random, ...
"length", 8, ...
"dimension", 2, ...
"randkey", 3);
signal = gen.build_signal();
expected = [ ...
1 0; ...
1 0; ...
0 0; ...
1 0; ...
1 1; ...
1 0; ...
0 1; ...
0 1];
testCase.verifySize(signal, [8 2]);
testCase.verifyEqual(signal, expected);
end
function prmsDataUsesMoveItStyleShape(testCase)
gen = Signalgenerator( ...
"form", signalform.prms, ...
"length", 8, ...
"dimension", 2, ...
"order", 6);
signal = gen.build_signal();
expected = [ ...
1 0; ...
1 0; ...
0 1; ...
1 0; ...
0 1; ...
0 0; ...
1 0; ...
0 0];
testCase.verifySize(signal, [8 2]);
testCase.verifyEqual(signal, expected);
end
function prmsLengthDefaultsToPamSourceStyleLength(testCase)
pam4Gen = Signalgenerator( ...
"form", signalform.prms, ...
"dimension", 2, ...
"order", 7);
pam6Gen = Signalgenerator( ...
"form", signalform.prms, ...
"dimension", 5, ...
"order", 7);
testCase.verifyEqual(pam4Gen.length, 2^(7 - 1));
testCase.verifyEqual(pam6Gen.length, 2^(7 - 2));
end
function processWrapsPrmsSignalInInformationsignal(testCase)
gen = Signalgenerator( ...
"form", signalform.prms, ...
"length", 8, ...
"dimension", 2, ...
"order", 6, ...
"fs", 42);
out = gen.process();
testCase.verifyClass(out, 'Informationsignal');
testCase.verifySize(out.signal, [8 2]);
testCase.verifyEqual(out.fs, 42);
testCase.verifyEqual(height(out.logbook), 1);
end
end
end