# lteDLDeprecode

## Syntax

• ``out = lteDLDeprecode(in,nu,txscheme,codebook)``
• ``out = lteDLDeprecode(enb,chs,in)``

## Description

````out = lteDLDeprecode(in,nu,txscheme,codebook)` performs deprecoding using matrix pseudo-inversion to undo processing described in [1], section 6.3.4. The function returns an M-by-NU matrix `out` containing `nu` layers, with M symbols in each layer. The overall operation of the deprecoder is to transpose what is defined in the specification. The symbols for layers and antennas lie in columns rather than in rows.```
````out = lteDLDeprecode(enb,chs,in)` performs deprecoding of the precoded symbol matrix, `in`, according to cell-wide settings `enb` and `chs` (channel transmission configurations).```

## Examples

collapse all

### Perform Deprecoding on Identity Matrix

Deprecode a precoded identity matrix having codebook index 1 for three layers and four antennas.

```in = lteDLPrecode(eye(3),4,'SpatialMux',1); out = lteDLDeprecode(in,3,'SpatialMux',1) ```
```out = 1.0000 + 0.0000i 0.0000 - 0.0000i -0.0000 + 0.0000i 0.0000 - 0.0000i 1.0000 + 0.0000i 0.0000 + 0.0000i -0.0000 + 0.0000i 0.0000 - 0.0000i 1.0000 + 0.0000i ```

## Input Arguments

collapse all

### `in` — Precoded input symbolsnumeric matrix

Precoded input symbols, specified as numeric matrix. The size of the matrix is N-by-P, where P is the number of transmission antennas and N is the number of symbols per antenna. Generate matrix by extracting a PDSCH using `ltePDSCHIndices` function on a received resource array. You can perform a similar extraction using the index generator for any other downlink channel that utilizes precoding.

### `nu` — Number of layerspositive scalar integer (1, …, 8)

Number of layers, specified as a positive scalar integer between 1 and 8. The maximum number of layers depends on the string specified for the transmission scheme, `txscheme`.

### `txscheme` — Transmission scheme`string`

Transmission scheme, specified as a string.

StringDescription
`'Port0'`Single-antenna port, port 0
`'TxDiversity'`Transmit diversity scheme
`'CDD'`Large delay CDD scheme
`'SpatialMux'`Closed-loop spatial multiplexing scheme
`'MultiUser'`Multiuser MIMO ( multiple-input multiple-output) scheme
`'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 8 layer transmission, ports 7-14

### `codebook` — Codebook indexscalar integer (0, ..., 15)

Codebook index to use during deprecoding, specified as a scalar integer between 0 and 15. This input is ignored for the `'Port0'`, `'TxDiversity'`, and `'CDD'` transmission schemes. You can find codebook matrix corresponding to a particular index in [1], section 6.3.4.

Data Types: `double`

### `enb` — eNodeB cell-wide settingsstructure

eNodeB cell-wide settings, specified as a structure that can contain the following parameter fields:

Parameter FieldRequired or OptionalValuesDescription
The following parameters apply when `chs.TxScheme` is set to `'SpatialMux'` or `'MultiUser'`.
`NCellID`Required

Nonnegative scalar integer (0,…,503)

Physical layer cell identity

`NSubframe`Required

Nonnegative scalar integer

Subframe number

`NDLRB`Required

Scalar integer (6, ..., 110). Standard bandwidth values are 6, 15, 25, 50, 75, and 100. `NDLRB` will also accept the standardized bandwidths in string format from the set {'1.4MHz', '3MHz', ‘5MHz', '10MHz', ‘15MHz', ‘20MHz'}.

Number of downlink (DL) resource blocks (RBs)

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

`CellRefP`Required

1, 2, 4

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

`CyclicPrefix`Optional

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

Cyclic prefix length

`DuplexMode`Optional

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

Duplexing mode, specified as:

• `'FDD'` for Frequency Division Duplex or

• `'TDD'` for Time Division Duplex

The following parameters apply when `DuplexMode` is set to `'TDD'`.
`TDDConfig`Optional

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

`SSC`Optional

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

Special subframe configuration (SSC)

Data Types: `struct`

### `chs` — Channel-specific transmission configurationstructure

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

Parameter FieldRequired or OptionalValuesDescription
`TxScheme`Required

Default `TxScheme` is RMC-dependent. Valid values include: `'SpatialMux'`, `'Port0'`, `'TxDiversity'`, `'CDD'`, `'MultiUser'`, `'Port5'`, `'Port7-8'`, `'Port8'`, `'Port7-14'`

Transmission scheme, specified as one of the following options.

• `'SpatialMux'` — Closed-loop spatial multiplexing.

• `'Port0'` — Single-antenna port, port 0.

• `'TxDiversity'` — Transmit diversity scheme.

• `'CDD'` — Large delay CDD scheme.

• `'MultiUser'` — Multiuser MIMO scheme.

• `'Port5'` — Single-antenna port, port 5.

• `'Port7-8'` — Single-antenna port, port 7 (`NLayers` = 1). Dual layer transmission, ports 7 and 8 (`NLayers` = 2).

• `'Port8'` — Single-antenna port, port 8.

• `'Port7-14'` — Up to 8-layer transmission, ports 7–14.

`NLayers`Required

1, …, 8

Number of transmission layers

The following parameters are apply when `TxScheme` is set to `'SpatialMux'` or `'MultiUser'`. You must include either `CodebookIdx` field or both `PMISet` and `PRBSet` fields. For more information, see Algorithms.
`CodebookIdx`Required

Nonnegative scalar integer (0, ..., 15)

Codebook index used during precoding

`PMISet`Required

Integer vector (0, ..., 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`.

For more information, see `ltePMIInfo`.
`PRBSet`Required

1- or 2-column integer 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 fields `PMISet` and `PRBSet` are used to determine the frequency-domain position that each precoded symbol in `out` occupies. This step is performed to apply the correct subband precoder when multiple PMI mode is used. Alternatively, you can provide the `CodebookIdx` parameter field. `CodebookIdx` is a scalar specifying the codebook index to use across the entire bandwidth. Therefore, the `CodebookIdx` field does not support subband precoding. The relationship between PMI values and codebook index is given in [2],Section 7.2.4.

## Output Arguments

collapse all

### `out` — Deprecoded downlink outputnumeric matrix

Deprecoded downlink output, returned as M-by-NU numeric matrix, containing NU layers, with M symbols in each layer.

expand all

### Algorithms

For transmission schemes `'CDD'`, `'SpatialMux'`, and `'MultiUser'`, and degenerately `'Port0'`, precoding involves multiplying a P × v precoding matrix, F, by a v × M matrix, representing M symbols on each of v transmission layers. This multiplication yields a P × M matrix, representing M precoded symbols on each of P antenna ports. Depending on the transmission scheme, the precoding matrix can be composed of multiple matrices multiplied together. But the size of the product, F, is always P × v.

For the `'TxDiversity'` transmission scheme, a P2 × 2v precoding matrix, F, is multiplied by a 2v × M matrix, formed by splitting the real and imaginary components of a v × M matrix of symbols on layers. This multiplication yields a P2 × M matrix of precoded symbols, which is then reshaped into a P × PM matrix for transmission. Since v is P for the `'TxDiversity'` transmission scheme, F is of size P2 × 2P, rather than P2 × 2v.

When v is P in `'CDD'`, `'SpatialMux'`, and `'MultiUser'` transmission schemes, and when P and v are 2 in the `'TxDiversity'` transmission scheme, the precoding matrix, F, is square. Its size is 2P × 2P for the transmit diversity scheme and P × P otherwise. In this case, the deprecoder takes the matrix inversion of the precoding matrix to yield the deprecoding matrix F–1. The matrix inversion is computed using LU decomposition with partial pivoting (row exchange):

1. Perform LU decomposition PxF = LU.

2. Solve LY = I using forward substitution.

3. Solve UX = Y using back substitution.

4. F-1 = XPx.

The degenerate case of the `'Port0'` transmission scheme falls into this category, with P = v = 1.

For the `'CDD'`, `'SpatialMux'`, and `'MultiUser'` transmission schemes, the deprecoding is then performed by multiplying F-1 by the transpose of the input `symbols` (`symbols` is size M × P, so its transpose is size P × M). This multiplication recovers the v × M (equals P × M) matrix of transmission layers. For the `'TxDiversity'` transmission scheme, the deprecoding is performed, multiplying F-1 by the transpose of the input `symbols` (`symbols` is size PM × P, so its transpose is size P × PM), having first been reshaped into a 2P × M matrix. This multiplication yields a 2v × M, matrix which is then split into two v × M matrices. The second matrix is multiplied by j and then the two matrices are added together (thus recombining real and imaginary parts) to recover the v × M matrix of transmission layers.

For the other cases that is `'CDD'`, `'SpatialMux'`, and `'MultiUser'` transmission schemes with vP and the `'TxDiversity'` transmission scheme with P = 4, the precoding matrix F is not square. Instead, the matrix is rectangular with size P × v, except in the case of `'TxDiversity'` transmission scheme with P = 4, where it is of size P2 × 2P = 16 × 8. The number of rows is always greater than the number of columns that is the matrix F is size m × n with m > n.

In this case, the deprecoder takes the matrix pseudo-inversion of the precoding matrix to yield the deprecoding matrix F+. The matrix pseudo-inversion is computed as follows.

1. Perform LU decomposition PxF = LU.

2. Remove the last mn rows of U to give $\overline{U}$.

3. Remove the last mn columns of L to give $\overline{L}$.

4. $X={\overline{U}}^{H}{\left(\overline{U}{\overline{U}}^{H}\right)}^{-1}{\left({\overline{L}}^{H}\overline{L}\right)}^{-1}{\overline{L}}^{H}$ (the matrix inversions are carried out as in the previous steps).

5. F+ = XPx

The application of the deprecoding matrix F+ is the same process as described for deprecoding the square matrix case with F+ in place of F–1.

This method of pseudo-inversion is based on [3], chapter 3.4, equation (56),.

## References

[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.

[2] 3GPP TS 36.213. "Physical layer procedures." 3rd Generation Partnership Project; Technical Specification Group Radio Access Network; Evolved Universal Terrestrial Radio Access (E-UTRA). URL: http://www.3gpp.org.

[3] Strang, Gilbert. Linear Algebra and Its Application. Academic Press, 1980. 2nd Edition.