Descramble input signal
The comm.Descrambler object descrambles a scalar or column vector input signal. The comm.Descrambler
object is the inverse of the
comm.Scrambler object. If you use the
comm.Scrambler object in a transmitter, then you use the comm.Descrambler object in the
This schematic shows the descrambler operation. The adders and subtracter operate modulo N, where N is the value specified by the CalculationBase property.
At each time step, the input causes the contents of the registers to shift sequentially.
Using the Polynomial property, you specify the on
or off state for each switch in the descrambler. To make the
object reverse the operation of the
comm.Scrambler object, use the same property
settings in both objects. If there is no signal delay between the scrambler and the descrambler,
then the InitialConditions in the two
objects must be the same.
To descramble an input signal:
comm.Descrambler object and set its properties.
Call the object with arguments, as if it were a function.
To learn more about how System objects work, see What Are System Objects? (MATLAB).
object™. This object descrambles the input data by using a linear feedback shift register
that you specify with the Polynomial property.
descrambler = comm.Descrambler
creates the descrambler object with the CalculationBase property set to
descrambler = comm.Descrambler(
base, the Polynomial property set to
poly, and the InitialConditions property set
comm.Descrambler(8,'1 + z^-2 + z^-3 + z^-5 + z^-7',[0 3 2 2 5 1 7])sets the calculation base to
8, and the descrambler polynomial and initial conditions as specified.
Unless otherwise indicated, properties are nontunable, which means you cannot change their
values after calling the object. Objects lock when you call them, and the
release function unlocks them.
If a property is tunable, you can change its value at any time.
For more information on changing property values, see System Design in MATLAB Using System Objects (MATLAB).
CalculationBase— Range of input data
Range of input data used in the descrambler for modulo operations, specified as a
nonnegative integer. The input and output of this object are integers from
Polynomial— Connections for linear feedback shift registers
'1 + z^-1 + z^-2 + z^-4'(default) | character vector | integer vector | binary vector
Connections for linear feedback shift registers in the descrambler, specified as a
character vector, integer vector, or binary vector. The
property defines if each switch in the descrambler is on or off. Specify the polynomial as:
A character vector, such as
'1 + z^-6 + z^-8'. For more details on
specifying polynomials in this way, see Character Representation of
An integer vector, such as
[0 -6 -8], listing the descrambler
coefficients in order of descending powers of
p(z-1) = 1 +
p2z-2 + ...
A binary vector, such as
[1 0 0 0 0 0 1 0 1], listing the powers of
z that appear in the polynomial that have a coefficient of 1. In this
case, the order of the descramble polynomial is one less than the binary vector
'1 + z^-6 + z^-8',
[0 -6 -8], and
[1 0 0 0 0 0 1 0 1] all represent this polynomial:
p(z-1) = 1 + z-6 + z-8
InitialConditionsSource— Initial conditions source
InitialConditions— Initial conditions of descrambler registers
[0 1 2 3](default) | nonnegative integer vector
Initial conditions of descrambler registers when the simulation starts, specified as a
nonnegative integer vector. The length of
InitialConditions must equal
the order of the Polynomial property. The vector
element values must be integers from
0 to CalculationBase –
This property is available when InitialConditionsSource
is set to
ResetInputPort— Descrambler state reset port
descrambles the input signal. The output is the same data type and length as the input vector.
descrambledOut = descrambler(
signal— Input signal
Input signal, specified as a column vector.
descrambledOut = descrambler([0 1 1 0 1 0])
initcond— Initial register condition
Initial descrambler register conditions when the simulation starts, specified as a
nonnegative integer column vector. The length of
initcond must equal the
order of the Polynomial property. The vector
element values must be integers from
0 to CalculationBase –
descrambledOut = descrambler(signal,[0 1 1 0]) corresponds to
possible initial register states for a descrambler with a polynomial order of
4 and a calculation base of
reset— Reset initial state of descrambler
Reset initial state of the descrambler when the simulation starts, specified as a
scalar. When the value of
reset is nonzero, the object is reset before
it is called.
descrambledOut = descrambler(signal,0) descrambles the input
signal without resetting the descrambler states.
To use an object function, specify the
object as the first input argument. For
example, to release system resources of a System
Scramble and descramble 8-ary data using
comm.Descrambler System objects™ having a calculation base of 8.
Create scrambler and descrambler objects, specifying the calculation base, polynomial, and initial conditions using input arguments. The scrambler and descrambler polynomials are specified with different but equivalent data formats.
N = 8; scrambler = comm.Scrambler(N,'1 + z^-2 + z^-3 + z^-5 + z^-7', ... [0 3 2 2 5 1 7]); descrambler = comm.Descrambler(N,[1 0 1 1 0 1 0 1], ... [0 3 2 2 5 1 7]);
Scramble and descramble random integers. Display the original data, scrambled data, and descrambled data sequences.
data = randi([0 N-1],5,1); scrData = scrambler(data); deScrData = descrambler(scrData); [data scrData deScrData]
ans = 5×3 6 7 6 7 5 7 1 7 1 7 0 7 5 3 5
Verify that the descrambled data matches the original data.
ans = logical 1
Scramble and descramble quaternary data while changing the initial conditions between function calls.
Create scrambler and descrambler System objects having a calculation base of 4. Set the
InitialConditionsSource property to
'Input port' so you can set the initial conditions as an argument to the object.
N = 4; scrambler = comm.Scrambler(N,'1 + z^-3','InitialConditionsSource','Input port'); descrambler = comm.Descrambler(N,'1 + z^-3','InitialConditionsSource','Input port');
Preallocate memory for the error vector which will be used to store errors output by the
errVec = zeros(10,1);
Scramble and descramble random integers while changing the initial conditions,
initCond, each time the loop executes. Use the
symerr function to determine if the scrambling and descrambling operations result in symbol errors.
for k = 1:10 initCond = randperm(3)'; data = randi([0 N-1],5,1); scrData = scrambler(data,initCond); deScrData = descrambler(scrData,initCond); errVec(k) = symerr(data,deScrData); end
errVec to verify that the output from the descrambler matches the original data.
errVec = 10×1 0 0 0 0 0 0 0 0 0 0
Usage notes and limitations:
See System Objects in MATLAB Code Generation (MATLAB Coder).