Main Content


Channel quality information channel encoding



out = lteCQIEncode(chs,in) returns the encoded channel quality information (CQI) bits after performing channel coding defined for CQI in TS 36.212 [1], Sections and in should be a vector or cell array containing the CQI bits and out is the encoded bits in the same form. out is also cell array if the PUSCH-specific parameter structure, chs, defines multiple codewords.

Multiple codewords can be parameterized by two different forms of the chs structure. Each codeword can be defined by separate elements of a 1-by-2 structure array, or the codeword parameters can be combined together in the fields of a single scalar, or 1-by-1, structure. Any scalar field values apply to both codewords and a scalar NLayers is the total number. See UL-SCH Parameterization for further details.

While the CQI information bits are carried on one codeword only, a single input still results in a cell array of encoded outputs if multiple codewords are parameterized. In this case, the QdCQI field should contain a 0 in the position of the unused codeword. This allows for easy integration with the other toolbox functions.

The CQI coder uses two different coding schemes depending upon the number of CQI bits to be coded. If the number of CQI bits are less than or equal to 11, the channel coding of the CQI bits is performed according to TS 36.212 [1], Section For CQI bits greater than 11, the coding process includes 8-bit CRC attachment, tail-biting convolutional coding and rate matching to the output length deduced from parameters QdCQI and Modulation.


collapse all

Generate the coded CQI bits for a single codeword.

Create input stream and initialize channel settings structure. Encode CQI bits.

in = [0; 1; 0; 1; 0; 1];
chs1.Modulation = '16QAM';
chs1.QdCQI = 4;
chs1.NLayers = 2;
codedCqi1 = lteCQIEncode(chs1,in)
codedCqi1 = 32x1 int8 column vector


Generate the coded CQI bits for two codewords with CQI on the second codeword.

Create input stream and initialize channel settings structure. Encode CQI bits. In this case the CQI is on the second codeword. The output is a cell array where the first cell is empty.

in = [0; 1; 0; 1; 0; 1];
chs2.Modulation = {'16QAM' '16QAM'};
chs2.QdCQI = [0 4];
chs2.NLayers = 2;
codedCqi2 = lteCQIEncode(chs2,in)
codedCqi2=1×2 cell array
    {0x1 int8}    {16x1 int8}

Input Arguments

collapse all

Channel-specific transmission configuration, specified as a structure that can contain the following parameter fields.

Parameter FieldRequired or OptionalValuesDescription

nonnegative scalar integer

Number of coded channel quality information (CQI) symbols (Q’_CQI)


'QPSK', '16QAM', '64QAM', or '256QAM'

Modulation type, specified as a character vector, cell array of character vectors, or string array. If blocks, each cell is associated with a transport block.


1 (default), 2, 3, 4

Number of transmission layers.

CQI input bits, specified as a numeric vector or a cell array of numeric vectors.

Output Arguments

collapse all

Encoded CQI output bits, returned as an integer vector or a cell array of integer vectors. This argument contains the coded CQI bits after performing channel coding.

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