Main Content


Turbo encoding



out = lteTurboEncode(in) returns the result of turbo encoding the input data, in. Only a finite number of acceptable data vector lengths can be coded. For more information, see TS 36.212 [1], Table 5.1.3-3. Filler bits are supported through negative input values.

The encoder is a parallel concatenated convolutional code (PCCC) with two 8-state constituent encoders and a contention-free interleaver. The coding rate of turbo encoder is 1/3. The three encoded parity streams are concatenated block-wise to form the encoded output, [S P1 P2], where S is the vector of systematic bits, P1 is the vector of encoder 1 bits, and P2 is the vector of encoder 2 bits. To support the correct processing of filler bits, negative input bit values are specially processed. They are treated as logical 0 at the input to both encoders but their negative values are passed directly through to the associated output positions in subblocks S and P1.


collapse all

Perform turbo encoding for a cell array input.

bits = lteTurboEncode({ones(40,1),ones(6144,1)})
bits=1×2 cell array
    {132x1 int8}    {18444x1 int8}

Input Arguments

collapse all

Input data, specified as a numeric vector or a cell array of vectors.

Data Types: int8 | double | cell

Output Arguments

collapse all

Turbo encoded bits, returned as an integer column vector or a cell array of integer column vectors. If the input is a cell array, the output is a cell array containing the separately encoded input array vectors.

Data Types: int8 | cell


[1] 3GPP TS 36.212. “Evolved Universal Terrestrial Radio Access (E-UTRA); Multiplexing and channel coding.” 3rd Generation Partnership Project; Technical Specification Group Radio Access Network. URL:

Version History

Introduced in R2014a