Deinterleave symbols using helical array
System object™ permutes the symbols in the input signal by placing them in a row-by-row array
and then selecting groups helically to send to the output port. This System object restores the original ordering of a sequence that was interleaved using the
System object. For more information, see Algorithms.
To deinterleave symbols using helical array:
comm.HelicalDeinterleaverobject 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?
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.
NumColumns — Number of columns in helical array
6 (default) | positive integer
Number of columns in the helical array, specified as a positive integer.
GroupSize — Size of each group of input symbols
4 (default) | positive integer
Size of each group of input symbols, specified as a positive integer.
StepSize — Helical array step size
1 (default) | positive integer
Helical array step size, specified as a positive integer. Step size indicates the number of rows of separation between consecutive input groups in their respective columns of the helical array.
InitialConditions — Initial conditions of helical array
0 (default) | numeric scalar
Initial conditions of the helical array, specified as a numeric scalar value. This is the initial value stored in the helical array.
intrlvseq — Interleaved sequence of symbols
Interleaved sequence of symbols, specified as a column vector. Input sequence is
of size NumColumns × GroupSize. This sequence must
be one that was interleaved using the
deintrlvseq — Deinterleaved sequence of symbols
Deinterleaved sequence of symbols, returned as a column vector of the same data
type and size as the
To use an object function, specify the
System object as the first input argument. For
example, to release system resources of a System object named
Helical Interleaving and Deinterleaving
Create helical interleaver and deinterleaver System™ objects.
intrlver = comm.HelicalInterleaver(GroupSize=2,NumColumns=3, ... InitialConditions=-1); deintrlvr = comm.HelicalDeinterleaver(GroupSize=2,NumColumns=3, ... InitialConditions=-1);
Generate random data. Interleave and then deinterleave the data.
[dataIn,dataOut] = deal(); for k = 1:10 data = randi(7,6,1); intData = intrlver(data); deIntData = deintrlvr(intData); dataIn = cat(1,dataIn,data); dataOut = cat(1,dataOut,deIntData); end
Determine the delay through the interleaver and deinterleaver pair.
intlvDelay = finddelay(dataIn,dataOut)
intlvDelay = 6
After taking the interleaving delay into account, confirm that the original and deinterleaved data are identical.
ans = logical
Array Processing of Helical Deinterleaver
The helical deinterleaver permutes the symbols in the input signal by placing them in an array row-by-row and then selecting groups in a helical fashion to send to the output port.
The object uses the array internally for its computations. If you set the NumColumns property of the object to C, then the array has C columns and unlimited rows. If you set the GroupSize property to N, then the object accepts an input of length C × N at each time step and inserts them into the next N rows of the array. The object also places the InitialConditions property into certain positions in the top few rows of the array. This placement helps not only to accommodate the helical pattern but also to preserve the vector indices of symbols that pass through the Helical Interleaver and Helical Deinterleaver objects in turn.
The output consists of consecutive groups of N symbols. Counting from
the beginning of the simulation, the object selects the
kth output group in the array from column
C. This placement is of type helical because of the reduction modulo
C, and because the first symbol in the
kth group is in the row
1+(k-1) × s, where s is the value
for the StepSize property.
This object accepts a column vector input signal containing C × N elements.
Delay of Helical Interleaving and Deinterleaving
After processing a message with the helical interleaver and deinterleaver pair, the deinterleaved data lags the original message by symbols, where:
Before this delay elapses, the deinterleaver output is either the InitialConditions property
value in the
comm.HelicalInterleaver object or the InitialConditions property
value in the
If you incur an additional delay between the interleaver output and the deinterleaver
input, then the restored sequence lags the original sequence by the sum of the additional
delay and the amount in the formula above. For proper synchronization, the delay between the
interleaver and deinterleaver must be
N for some nonnegative
m. You can use the
dsp.Delay object to adjust delays manually, if necessary.
 Berlekamp, E. R. and P. Tong. "Improved Interleavers for Algebraic Block Codes." US Patent 4559625, Dec. 17, 1985.
C/C++ Code Generation
Generate C and C++ code using MATLAB® Coder™.
Usage notes and limitations:
See System Objects in MATLAB Code Generation (MATLAB Coder).
Introduced in R2012a