This is machine translation

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

Note: This page has been translated by MathWorks. Please click here
To view all translated materals including this page, select Japan from the country navigator on the bottom of this page.


Physical uplink shared channel decoding


  • [cws,symbols] = ltePUSCHDecode(ue,chs,sym)
  • [cws,symbols] = ltePUSCHDecode(ue,chs,sym,hest,noiseest)
  • [cws,symbols] = ltePUSCHDecode(ue,chs,sym,hest,noiseest,alg)



[cws,symbols] = ltePUSCHDecode(ue,chs,sym) returns a soft bit vector, or cell array of soft bit vectors, cws, containing the received codeword estimates and received constellation of complex symbol vector, symbols. The output results from decoding of the Physical Uplink Shared Channel (PUSCH) complex symbols, sym, for UE-specific settings, ue, and channel transmission configuration structure or structure array, chs. It performs the inverse of the Physical Uplink Shared Channel (PUSCH) processing. See TS 36.211, Section 5.3 [1] or ltePUSCH for details.

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. For details, see UL-SCH Parameterization .

If UCI control information, such as RI or HARQ-ACK, is present in the received complex PUSCH symbols, then this function performs the descrambling of the placeholder bits by establishing the correct locations with the help of the UCI-related parameters present in chs.

sym is an M-by-P matrix or M-by-NU matrix. Where M is the number of symbols per antenna or layer, P is the number of transmission antennas, NTxAnts, and NU is the number of transmission layers, NLayers.

  • For a single-antenna transmission (NTxAnts = 1), both P and NU are 1: sym must be M-by-1 and contain the single-antenna PUSCH symbols for decoding.

  • When P is greater than 1 and sym is M-by-P: Decoding is performed using pseudoinverse-based deprecoding for spatial multiplexing.

  • When P is greater than 1 and sym is M-by-NU: sym is assumed to be deprecoded, so.decoding is performed without deprecoding. For example, by having performed channel estimation against the transmit layer DRS sequences and equalizing the received symbols using that channel estimate to yield sym.

    Note:   This function does apply deprecoding. when the need for deprecoding is ambiguous, such as when P>1 and P=NU.

[cws,symbols] = ltePUSCHDecode(ue,chs,sym,hest,noiseest) uses additional inputs (hest,noiseest). The channel estimate, hest, and the noise estimate noiseest. In this case, sym is an M-by-NRxAnts matrix, where M is the number of symbols per antenna and NRxAnts is the number of receive antennas. When ue.NTxAnts is greater than 1, the reception is performed using an MMSE equalizer, equalizing between transmitted and received layers. When ue.NTxAnts is 1, the reception is performed using MMSE equalization on the received antennas.

[cws,symbols] = ltePUSCHDecode(ue,chs,sym,hest,noiseest,alg) provides control over weighting the output soft bits with Channel State Information (CSI) calculated during the equalization stage using algorithmic configuration structure, alg.


collapse all

Decode the PUSCH modulation symbols contained in the output of a Fixed Reference Channel (FRC).

frc = lteRMCUL('A3-2');
trData = randi([0,1],frc.PUSCH.TrBlkSizes(1),1);
[waveform,reGrid] = lteRMCULTool(frc,trData);
puschIndices = ltePUSCHIndices(frc,frc.PUSCH);
rxCw = ltePUSCHDecode(frc,frc.PUSCH,reGrid(puschIndices));

Input Arguments

collapse all

UE-specific settings, specified as a structure having the following fields.

Parameter FieldRequired or OptionalValuesDescription


Physical layer cell identity


0 (default), nonnegative scalar integer

Subframe number


0 (default), scalar integer

Radio network temporary identifier (RNTI) value (16 bits)


'Normal' (default), 'Extended'

Cyclic prefix length.


1 (default), 2, 4

Number of transmission antennas.


0 (default), 1

Option to shorten the subframe by omitting the last symbol, specified as 0 or 1. If 1, the last symbol of the subframe is not used. For subframes with possible SRS transmission, set Shortened to 1 to maintain a standard compliant configuration.

Data Types: struct

Channel transmission configuration, specified as a scalar structure or a structure array. chs is the PUSCH channel-specific structure having these fields. If UCI is present in the transmitted PUSCH to be decoded, the optional fields, ORI, OACK, QdRI, and QdACK,must be configured in the chs structure.

Parameter FieldRequired or OptionalValuesDescription

'QPSK', '16QAM', '64QAM'

Modulation format


Integer column vector or two-column matrix

Physical Resource Block (PRB) indices, specified as a column vector or two-column matrix, corresponding to the slot wise resource allocations for this PUSCH.

If a column vector is provided for PRBSet, the resource allocation is the same in both slots of the subframe. The two-column matrix can be used to specify differing PRBs for each slot in a subframe. The PRB indices are zero-based.


1 (default), 2, 3, 4

Number of transmission layers.

The following field is required only when ue.NTxAnts is set to 2 or 4. Acceptable values for PMI depend upon ue.NTxAnts and NLayers.

Numeric scalar (0...23)

0 (default)

Scalar precoder matrix indication (PMI) to be used during precoding



0 (default)

Number of uncoded RI bits


nonnegative scalar integer, 0 (default)

Number of uncoded HARQ-ACK bits.



0 (default)

Number of coded RI symbols in UL-SCH, specified as an integer. Optional. (Q'_RI)


nonnegative scalar integer

0 (default)

Number of coded HARQ-ACK symbols in UL-SCH (Q'_ACK), specified as an integer. Optional.

Data Types: struct

PUSCH symbols, specified as a complex-valued numeric matrix of size M-by-P or M-by-NU. Where M is the number of symbols per antenna or layer, P is the number of transmission antennas, NTxAnts, and NU is the number of transmission layers, NLayers.

Data Types: double
Complex Number Support: Yes

Channel estimate, specified as a 3-D numeric array of size M-by-NRxAnts-by-NTxAnts. Where M is the number of symbols per antenna, NRxAnts is the number of receive antennas, and NTxAnts is the number of transmit antennas ports, given by ue.NTxAnts.

Data Types: double

Noise estimate, specified as a numeric scalar. This argument is an estimate of the noise power spectral density per RE on received subframe. The lteULChannelEstimate function provides such an estimate.

Data Types: double

Algorithmic configuration, specified as a structure having the following field.

Parameter FieldRequired or OptionalValuesDescription

'On' (default), 'Off'

Flag provides control over weighting the soft values that are used to determine the output values with the channel state information (CSI) calculated during the equalization process. If 'On', soft values are weighted by CSI.

Data Types: struct

Output Arguments

collapse all

Codewords, returned as a column vector or a cell array of column vectors. The soft bit vectors contain the received codeword estimates.

Data Types: double

Received constellation of symbols, received as a complex-valued column vector.

Data Types: double


[1] 3GPP TS 36.211. "Physical Channels and Modulation." 3rd Generation Partnership Project; Technical Specification Group Radio Access Network; Evolved Universal Terrestrial Radio Access (E-UTRA). URL:

Introduced in R2013b

Was this topic helpful?