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)
```

`[`

returns
a soft bit vector, or cell array of soft bit vectors, `cws`

,`symbols`

]
= ltePUSCHDecode(`ue`

,`chs`

,`sym`

)`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`

.

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

`[`

uses
additional inputs (`cws`

,`symbols`

]
= ltePUSCHDecode(`ue`

,`chs`

,`sym`

,`hest`

,`noiseest`

)`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.

[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: http://www.3gpp.org.

`ltePUSCH`

| `ltePUSCHDRS`

| `ltePUSCHDRSIndices`

| `ltePUSCHDeprecode`

| `ltePUSCHIndices`

| `lteULDeprecode`

| `lteULDescramble`

| `lteULPMIInfo`

| `lteULSCHDecode`