Main Content


Channel quality information channel decoding



[out,blkerr] = lteCQIDecode(chs,in) decodes the soft input data, in, assumed to be encoded using the procedure defined for channel quality information (CQI) in TS 36.212, Sections and [1] for given channel transmission configuration, chs. The decoded output, out, is a vector of length OCQI, the number of uncoded CQI bits transmitted.

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.

The block decoding is performed separately on each soft input data using a maximum likelihood (ML) approach, which assumes that in has been demodulated and equalized to best restore the original transmitted values. The length of CQI bits defines the decoding process.

If the number of CQI bits, OCQI, is less than or equal to 11, a block decoding is performed to invert the coding procedure defined in TS 36.212, Section [1]. If OCQI is greater than 11, the CQI bits are recovered by performing rate matching to OCQI, tail-biting Viterbi decoding, and 8-bit CRC decoding.


collapse all

Decode encoded CQI bits.

Create input stream and initialize channel settings structures for encoding and decoding. Encode CQI bits and turn logical bits into soft data. Decode the CQI bits.

cqi = [0; 1; 0; 1; 0; 1];
chsEnc.Modulation = 'QPSK';
chsEnc.QdCQI = 16;
chsEnc.NLayers = 1;
chsDec.NLayers = 1;
chsDec.OCQI = 6;
enc = lteCQIEncode(chsEnc,cqi);
enc = double(enc)-0.5;
rxCqi = lteCQIDecode(chsDec,enc)
rxCqi = 6x1 logical array


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, 0 (default)

Number of uncoded channel quality information (CQI) bits


1 (default), 2, 3, 4

Number of transmission layers.

Encoded soft input data, specified as a numeric vector.

Output Arguments

collapse all

Decoded output, returned as a logical column vector of length OCQI.

Data Types: logical

Block error, returned as a logical scalar. If the number of transmitted bits is 22 or fewer, blkerr is 0. Otherwise, blkerr is a logical value that reports if a decoding error has occurred.

Data Types: logical


[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