# ltePDSCHDecode

## Syntax

``````[cws,symbols] = ltePDSCHDecode(enb,chs,sym)``````
``````[cws,symbols] = ltePDSCHDecode(enb,chs,sym,hest,noiseest)``````
``````[cws,symbols] = ltePDSCHDecode(enb,chs,rxgrid,hest,noiseest)``````

## Description

example

``````[cws,symbols] = ltePDSCHDecode(enb,chs,sym)``` performs the inverse of physical downlink shared channel (PDSCH) processing on the matrix of complex modulated PDSCH symbols, `sym`, using cell-wide settings structure, `enb`, and channel-specific configuration structure, `chs`. The channel inverse processing includes inverting the channel precoding, layer demapping and codeword separation, soft demodulation, and descrambling. Inverting the precoding is accomplished by matrix pseudoinversion of the precoding matrices. It returns a cell array, `cws`, of soft bit vectors, and a cell array, `symbols`, of received constellation symbol vectors resulting from performing the inverse of Physical Downlink Shared Channel (PDSCH) processing. For more information, see TS 36.211 [1], Section 6.4 and `ltePDSCH`. `cws` is optionally scaled by channel state information (CSI) calculated during the equalization process. ```
``````[cws,symbols] = ltePDSCHDecode(enb,chs,sym,hest,noiseest)``` performs the decoding of the complex modulated PDSCH symbols `sym` using cell-wide settings, `enb`, channel-specific configuration, `chs`, channel estimate, `hest`, and the noise estimate, `noiseest`. The behavior varies based on the `chs`.`TxScheme` setting. For the `'TxDiversity'` transmission scheme, the precoding inversion is performed using an orthogonal space frequency block code (OSFBC) decoder. For the `'SpatialMux'`, `'CDD'`, and `'MultiUser'` transmission schemes, the precoding inversion is performed using a multiple-input, multiple-output (MIMO) minimum mean square error (MMSE) equalizer, equalizing between transmitted and received layers. For the `'Port0'`, `'Port5'`, `'Port7-8'`, `'Port8'`, and `'Port7-14'` transmission schemes, the reception is performed using MMSE equalization. The input channel estimate, `hest`, is assumed to be with reference to the transmission layers, using the UE-specific reference signals, so the MMSE equalization will produce MMSE equalized layers. `noiseest` is an estimate of the noise power spectral density per RE on the received subframe. This estimate is provided by the `lteDLChannelEstimate` function. ```
``````[cws,symbols] = ltePDSCHDecode(enb,chs,rxgrid,hest,noiseest)``` accepts the full received resource grid, `rxgrid`, for one subframe, in place of the `sym` input; the decoder will internally extract the PDSCH REs to obtain the complex modulated PDSCH symbols. `rxgrid` is a 3-D M-by-N-by-`NRxAnts` array of resource elements, where M and N are the number of subcarriers and symbols for one subframe for cell-wide settings `enb` and `NRxAnts` is the number of receive antennas. In this case, `hest` is a 4-D M-by-N-by-`NRxAnts`-by-`CellRefP` array where M and N are the number of subcarriers and symbols for one subframe for cell-wide settings `enb`, `NRxAnts` is the number of receive antennas, and `CellRefP` is the number of cell-specific reference signal antenna ports, given by `enb``.``CellRefP`. `hest` is processed to extract the channel estimates relevant to the PDSCH, those in the time and frequency locations corresponding to the PDSCH REs in `rxgrid`. ```

## Examples

collapse all

Generate and decode PDSCH symbols.

Initialize cell parameter structure `enb` for RMC R.0.

`enb = lteRMCDL('R.0');`

Populate a complex codeword matrix and generate modulated PDSCH symbols.

```codewordBits = randi([0,1],enb.PDSCH.CodedTrBlkSizes(1),1); pdschSym = ltePDSCH(enb,enb.PDSCH,codewordBits);```

Decode and plot the PDSCH symbols.

```[rxCodewords,rxSymbols] = ltePDSCHDecode(enb,enb.PDSCH,pdschSym); plot (rxSymbols{:},'k.') title('decoded PDSCH symbols')```

Show size and first 5 elements of output codewords to be modulated, `rxCws`, and received symbols, `symbols`.

`size_rxCodewords = size(rxCodewords{:})`
```size_rxCodewords = 1×2 504 1 ```
`rxCodewords{1}(1:1:5)`
```ans = 5×1 0.9487 0.9487 -0.3162 0.3162 0.3162 ```
`size_rxSymbols = size(rxSymbols{:})`
```size_rxSymbols = 1×2 126 1 ```
`rxSymbols{1}(1:5)`
```ans = 5×1 complex -0.9487 - 0.9487i -0.3162 + 0.9487i -0.3162 - 0.9487i -0.3162 - 0.3162i 0.9487 - 0.9487i ```

## Input Arguments

collapse all

eNodeB cell-wide settings, specified as a structure containing these parameter fields.

Parameter FieldRequired or OptionalValuesDescription
`NCellID`Required

Integer from 0 to 503

Physical layer cell identity

`NSubframe`Required

0 (default), nonnegative scalar integer

Subframe number

`CellRefP`Required

1, 2, 4

Number of cell-specific reference signal (CRS) antenna ports

`DuplexMode`Optional

`'FDD'` (default), `'TDD'`

Duplexing mode, specified as:

• `'FDD'` for Frequency Division Duplex or

• `'TDD'` for Time Division Duplex

The following parameters are dependent upon the condition that `DuplexMode` is set to `'TDD'`.

`TDDConfig`Optional

0, 1 (default), 2, 3, 4, 5, 6

`SSC`Optional

0 (default), 1, 2, 3, 4, 5, 6, 7, 8, 9

Special subframe configuration (SSC)

The following parameter fields are dependent upon the condition that `chs``.``TxScheme` is set to `'SpatialMux'` or `'MultiUser'`.

`NDLRB`Required

Scalar integer from 6 to 110

Number of downlink resource blocks. (${N}_{\text{RB}}^{\text{DL}}$)

`CFI`Required

1, 2, or 3
Scalar or if the CFI varies per subframe, a vector of length 10 (corresponding to a frame).

Control format indicator (`CFI`) value. In TDD mode, `CFI` varies per subframe for the RMCs (`'R.0', 'R.5', 'R.6', 'R.6-27RB', 'R.12-9RB'`)

`CyclicPrefix`Optional

`'Normal'` (default), `'Extended'`

Cyclic prefix length

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

Parameter FieldRequired or OptionalValuesDescription
`Modulation`Required`'QPSK'`, `'16QAM'`, `'64QAM'`, `'256QAM'`, `'1024QAM'`

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.

`RNTI`Required

0 (default), scalar integer

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

`TxScheme`Required

`'Port0'`, `'TxDiversity'`, `'CDD'`, `'SpatialMux'`, `'MultiUser'`, `'Port5'`, `'Port7-8'`, `'Port8'`, `'Port7-14'`.

PDSCH transmission scheme, specified as one of the following options.

Transmission schemeDescription
`'Port0'`Single antenna port, port 0
`'TxDiversity'`Transmit diversity
`'CDD'`Large delay cyclic delay diversity scheme
`'SpatialMux'`Closed loop spatial multiplexing
`'MultiUser'`Multi-user MIMO
`'Port5'`Single-antenna port, port 5
`'Port7-8'`Single-antenna port, port 7, when `NLayers` = 1. Dual layer transmission, ports 7 and 8, when `NLayers` = 2.
`'Port8'`Single-antenna port, port 8
`'Port7-14'`Up to eight layer transmission, ports 7–14

`NLayers`Required

Integer from 1 to 8

Number of transmission layers.

`CSI`Optional

`'Off'` (default), `'On'`

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.

The following parameters are dependent upon the condition that `TxScheme` is set to `'SpatialMux'` or `'MultiUser'`.
`PMISet`Required

Integer vector with element values from 0 to 15.

Precoder matrix indication (PMI) set. It can contain either a single value, corresponding to single PMI mode, or multiple values, corresponding to multiple or subband PMI mode. The number of values depends on CellRefP, transmission layers and TxScheme. For more information about setting PMI parameters, see `ltePMIInfo`.

`PRBSet`Required

Integer column vector or two-column matrix

Zero-based physical resource block (PRB) indices corresponding to the slot wise resource allocations for this PDSCH. `PRBSet` can be assigned as:

• a column vector, the resource allocation is the same in both slots of the subframe,

• a two-column matrix, this parameter specifies different PRBs for each slot in a subframe,

• a cell array of length 10 (corresponding to a frame, if the allocated physical resource blocks vary across subframes).

PRBSet varies per subframe for the RMCs `'R.25'`(TDD), `'R.26'`(TDD), `'R.27'`(TDD), `'R.43'`(FDD), `'R.44'`, `'R.45'`, `'R.48'`, `'R.50'`, and `'R.51'`.

The following parameters are dependent upon the condition that `TxScheme` is set to `'Port5'`, `'Port7-8'`, `'Port8'`, or `'Port7-14'`.
`W`Optional

Numeric matrix, `[]` (default)

`NLayers`-by-P precoding matrix for the wideband UE-specific beamforming of the PDSCH symbols. P is the number of transmit antennas. When `W` is not specified, no precoding is applied.

Complex modulated PDSCH symbols, specified as a numeric matrix of size `NRE`-by-`NRxAnts`. `NRE` is the number of QAM symbols per antenna assigned to the PDSCH and `NRxAnts` is the number of receive antennas.

Data Types: `double`
Complex Number Support: Yes

Channel estimate, specified as a 3-D or 4-D numeric array. For the `'Port0'`, `'TxDiversity'`, `'SpatialMux'`, `'CDD'`, and `'MultiUser'` transmission schemes, the array size is `NRE`-by-`NRxAnts`-by-`CellRefP`, where `NRE` is the number of QAM symbols per antenna assigned to the PDSCH, `NRxAnts` is the number of receive antennas, and `CellRefP` is the number of cell-specific reference signal antennas, given by `enb.CellRefP`. For the `'Port5'`, `'Port7-8'`, `'Port8'`, and `'Port7-14'` transmission schemes, the array size is `NRE`-by-`NRxAnts`-by-`NLayers`, where `NLayers` is the number of transmission layers given by `chs.NLayers`.

When `rxgrid` is supplied, `hest` is a 4-D numeric array of size M-by-N-by-`NRxAnts`-by-`CellRefP`, where M and N are the number of subcarriers and symbols for one subframe for cell-wide settings, `enb`, `NRxAnts` is the number of receive antennas, and `CellRefP` is the number of cell-specific reference signal antenna ports, given by `enb.CellRefP`.

Data Types: `double`

Noise estimate of the noise power spectral density per RE on the received subframe, specified as a numeric array.

Data Types: `double`

Full received resource grid, specified as a 3-D M-by-N-by-`NRxAnts` array of resource elements, where M and N are the number of subcarriers and symbols for one subframe for cell-wide settings `enb` and `NRxAnts` is the number of receive antennas.

Data Types: `double`
Complex Number Support: Yes

## Output Arguments

collapse all

Codeword or codewords, returned as a cell array containing one or two vectors of bit values corresponding to the one or two codewords to be modulated.

Data Types: `double`

Received constellation symbols, returned as a cell array of complex double column vectors, resulting from performing the inverse of PDSCH processing.

Data Types: `cell`

## References

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