This is machine translation

Translated by Microsoft
Mouse over text to see original. Click the button below to return to the English verison of the page.


HARQ-ACK channel encoding




out = lteACKEncode(chs,in) returns the coded HARQ-ACK information bits after performing block coding defined for HARQ-ACK in TS 36.212 [1], Section . The input argument, in, is a vector or cell array containing up to 20 HARQ-ACK information bits. The output argument, out, is the encoded bits in the same form.

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.

Since the HARQ-ACK bits are carried on all defined codewords, a single input results in a cell array of encoded outputs if multiple codewords are parameterized. This allows for easy integration with the other toolbox functions.

The HARQ-ACK coder performs different types of block coding depending upon the number of HARQ-ACK bits in vector in. If in consists of one element, it uses TS 36.212 [1], Table If in consists of two elements, it uses TS 36.212 [1], Table [1] for encoding. The placeholder bits, x and y in the referenced tables, are represented by –1 and –2, respectively.

Similarly, for between 3 and 11 bits, the HARQ-ACK encoding is performed as described in TS 36.212 [1], Section For bits greater than 11, the encoding is performed as described in TS 36.212 [1], Section


collapse all

Encode a HARQ-ACK information bit for one codeword with 16QAM modulation.

ackbit = 1;
chs.Modulation = '16QAM';
chs.QdACK = 1;
out1 = lteACKEncode(chs,ackbit)
out1 =

  4×1 int8 column vector


Encode a HARQ-ACK information bit for two codewords with differing modulation schemes.

ackbit = 1;
chs.Modulation = {'16QAM' '64QAM'};
chs.NLayers = 2;
chs.QdACK = 1;
out2 = lteACKEncode(chs,ackbit)
out2 =

  1×2 cell array

    [4×1 int8]    [6×1 int8]

Input Arguments

collapse all

PUSCH-specific channel transmission configuration, specified as a structure or a structure array, which contains the following parameter fields.

Parameter FieldRequired or OptionalValuesDescription

nonnegative scalar integer

Number of coded HARQ-ACK symbols for ACK or NACK (Q'_ACK)


'QPSK', '16QAM', '64QAM', or a cell array of these character vectors

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


1 (default), 2, 3, 4

Number of transmission layers, total or per codeword


0 (default), 1, …, 9

TDD HARQ-ACK bundling scrambling sequence index. When set to 0, the function disables the TDD HARQ-ACK bundling scrambling. Therefore, it is off by default.

HARQ-ACK information bits, specified as a logical vector or a cell array of logical vectors. Each vector can have a length of up to 20 information bits.

Data Types: logical | double | cell

Output Arguments

collapse all

Encoded HARQ-ACK information bits, returned as either an integer column vector or a cell array of integer column vectors. The encoded bits are in the same form as the input bits. Therefore, if the PUSCH-specific parameter structure, chs, defines multiple codewords, out is a cell array.

Data Types: int8 | cell


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

Introduced in R2014a

Was this topic helpful?