Main Content

comm.ConvolutionalDeinterleaver

Deinterleave symbols using set of shift registers with specified delays

Description

The comm.ConvolutionalDeinterleaver System object™ deinterleaves the symbols in the input sequence by using a set of shift registers, each with its own specified delay. The comm.ConvolutionalDeinterleaver object must have the same number of registers as the associated interleaver. For information about delays, see Delays of Convolutional Interleaving and Deinterleaving.

To deinterleave symbols using a set of shift registers with specified delays:

  1. Create the comm.ConvolutionalDeinterleaver object and set its properties.

  2. Call the object with arguments, as if it were a function.

To learn more about how System objects work, see What Are System Objects?

Creation

Description

deintrlvr = comm.ConvolutionalDeinterleaver creates a default convolutional deinterleaver System object.

deintrlvr = comm.ConvolutionalDeinterleaver(Name=Value) sets Properties using one or more name-value arguments. For example, NumRegisters=10 specifies 10 internal shift registers.

example

Properties

expand all

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.

Number of internal shift registers, specified as a positive integer.

Data Types: double

Symbol capacity difference of each successive shift register, specified as a positive integer. The last register holds zero symbols.

Data Types: double

Initial conditions of the shift registers, specified as one of these options.

  • Scalar — All shift registers, except the last one, store the same specified value.

  • Column vector — If the length of the column vector equals the value of the NumRegisters property, then the kth shift register stores the (N–k+1)th element of the specified vector. N is the total number of shift registers (NumRegisters).

Because the first shift register has zero delay, the object ignores the first element of this property.

Data Types: double

Usage

Description

deintrlvseq = deintrlvr(intrlvseq) deinterleaves the input sequence of symbols, by using a set of shift registers. The object outputs the deinterleaved sequence of symbols. For information about delays, see Delays of Convolutional Interleaving and Deinterleaving.

Input Arguments

expand all

Interleaved sequence of symbols, specified as a column vector. This sequence must be one that was interleaved using the comm.ConvolutionalInterleaver System object.

Data Types: numeric | logical | fi

Output Arguments

expand all

Deinterleaved sequence of symbols, returned as a column vector of the same data type and size as the intrlvseq argument.

Data Types: numeric | logical | fi

Object Functions

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 obj, use this syntax:

release(obj)

expand all

stepRun System object algorithm
releaseRelease resources and allow changes to System object property values and input characteristics
resetReset internal states of System object

Examples

collapse all

Create a convolutional interleaver System object, specifying the number of shift registers and register length step.

intrlvr = comm.ConvolutionalInterleaver(NumRegisters=2, ...
                                        RegisterLengthStep=3);

Create a convolutional deinterleaver System object, specifying the number of shift registers and register length step.

deintrlvr = comm.ConvolutionalDeinterleaver(NumRegisters=2, ...
                                            RegisterLengthStep=3);

Generate a random data sequence. Pass the data sequence through the interleaver and then the deinterleaver.

data = (0:20)';
intrlvData = intrlvr(data);
deintrlvData = deintrlvr(intrlvData);

Display the original sequence, interleaved sequence, and restored sequence.

[data,intrlvData,deintrlvData]
ans = 21×3

     0     0     0
     1     0     0
     2     2     0
     3     0     0
     4     4     0
     5     0     0
     6     6     0
     7     1     1
     8     8     2
     9     3     3
      ⋮

The delay through the interleaver and deinterleaver pair is equal to the product of the NumRegisters and RegisterLengthStep properties.

intrlvDelay = intrlvr.NumRegisters*intrlvr.RegisterLengthStep
intrlvDelay = 
6

After accounting for this delay, verify that the original and deinterleaved data are identical.

numSymErrors = symerr(data(1:end-intrlvDelay), ...
                      deintrlvData(1+intrlvDelay:end))
numSymErrors = 
0

More About

expand all

References

[1] Clark, George C., and J. Bibb Cain. Error-Correction Coding for Digital Communications. Applications of Communications Theory. New York: Plenum Press, 1981.

[2] Forney, G., D., Jr. "Burst-Correcting Codes for the Classic Bursty Channel." IEEE Transactions on Communications, vol. COM-19, October 1971. 772-781.

[3] Ramsey, J. L. "Realization of Optimum Interleavers." IEEE Transactions on Information Theory, IT-16 (3), May 1970. 338-345.

Extended Capabilities

Version History

Introduced in R2012a