# lteSLChannelEstimatePSSCH

## Syntax

``[hest] = lteSLChannelEstimatePSSCH(ue,rxgrid)``
``[hest] = lteSLChannelEstimatePSSCH(ue,cec,rxgrid)``
``````[hest,noiseest] = lteSLChannelEstimatePSSCH(___)``````

## Description

example

````[hest] = lteSLChannelEstimatePSSCH(ue,rxgrid)` returns an estimate for the channel by averaging the least squares estimates of the reference symbols across time and copying these estimates across the allocated resource elements within the time frequency grid. The channel estimation configuration uses the method described in TS 36.101 [1], Annex F.```

example

````[hest] = lteSLChannelEstimatePSSCH(ue,cec,rxgrid)` also accepts the channel estimator configuration structure, `cec`, to adjust the default method and parameters defined for estimating the channel.```

example

``````[hest,noiseest] = lteSLChannelEstimatePSSCH(___)``` also returns an estimate of the noise power spectral density for the channel. This syntax supports input options from prior syntaxes.```

## Examples

collapse all

Estimate the channel characteristics given the PSSCH-received resource grid containing PSSCH DM-RS symbols. Use the default channel estimation configuration method, as defined in TS 36.101, Annex F.

Configure UE Settings

Define UE-specific settings in a parameter structure.

```ue = struct('NSLRB',50,'CyclicPrefixSL','Normal','NSAID',255, ... 'Modulation','QPSK','NSubframePSSCH',0,'PRBSet',(30:39)');```

Populate Subframe with PSSCH Symbols

Create the subframe grid and indices for the subframe. Create shared channel and demodulation reference signal (DM-RS) symbols. Populate the subframe with the shared channel and DM-RS symbols.

```subframe = lteSLResourceGrid(ue); [psschIndices,psschInfo] = ltePSSCHIndices(ue); psschSymbols = ltePSSCH(ue,zeros(psschInfo.G,1)); subframe(psschIndices) = psschSymbols; subframe(ltePSSCHDRSIndices(ue)) = ltePSSCHDRS(ue); ```

Estimate Channel Characteristics

Estimate the channel characteristics by using the received resource grid containing PSSCH DM-RS symbols.

• No channel impairment is applied, so set the received waveform equal to the transmit waveform

• Perform sidelink SC-FDMA demodulation and channel estimation

```txWaveform = lteSLSCFDMAModulate(ue,subframe); rxWaveform = txWaveform; rxGrid = lteSLSCFDMADemodulate(ue,rxWaveform); hest = lteSLChannelEstimatePSSCH(ue,rxGrid);```

Estimate the channel characteristics given the PSSCH-received resource grid containing PSSCH DM-RS symbols.

Create Parameter Structures

Define UE-specific settings and channel estimation configuration settings in parameter structures.

```ue = struct('NSLRB',50,'CyclicPrefixSL','Normal','NSAID',255, ... 'Modulation','QPSK','NSubframePSSCH',0,'PRBSet',(30:39)'); cec = struct('FreqWindow',7,'TimeWindow',1,'InterpType','cubic', ... 'PilotAverage','UserDefined');```

Populate Subframe with PSSCH Symbols

Create the subframe grid and indices for the subframe. Create shared channel and demodulation reference signal (DM-RS) symbols. Populate the subframe with shared channel and DM-RS symbols.

```subframe = lteSLResourceGrid(ue); [psschIndices,psschInfo] = ltePSSCHIndices(ue); psschSymbols = ltePSSCH(ue,zeros(psschInfo.G,1)); subframe(psschIndices) = psschSymbols; subframe(ltePSSCHDRSIndices(ue)) = ltePSSCHDRS(ue); ```

Estimate Channel Characteristics

Estimate the channel characteristics by using the received resource grid containing PSSCH DM-RS symbols.

• No channel impairment is applied, so set the received waveform equal to the transmit waveform

• Perform sidelink SC-FDMA demodulation and channel estimation

```txWaveform = lteSLSCFDMAModulate(ue,subframe); rxWaveform = txWaveform; rxGrid = lteSLSCFDMADemodulate(ue,rxWaveform); hest = lteSLChannelEstimatePSSCH(ue,cec,rxGrid);```

Estimate the channel characteristics and noise power spectral density given the PSSCH-received resource grid containing PSSCH DM-RS symbols.

Create Parameter Structures

Define UE-specific settings and channel estimation configuration settings in parameter structures.

```ue = struct('NSLRB',50,'CyclicPrefixSL','Normal','NSAID',255, ... 'Modulation','QPSK','NSubframePSSCH',0,'PRBSet',(30:39)'); cec = struct('FreqWindow',7,'TimeWindow',1,'InterpType','cubic', ... 'PilotAverage','UserDefined');```

Populate Subframe with PSSCH Symbols

Create the subframe grid and indices for the subframe. Create shared channel and demodulation reference signal (DM-RS) symbols. Populate the subframe with shared channel and DM-RS symbols.

```subframe = lteSLResourceGrid(ue); [psschIndices,psschInfo] = ltePSSCHIndices(ue); psschSymbols = ltePSSCH(ue,zeros(psschInfo.G,1)); subframe(psschIndices) = psschSymbols;```

Create the control DM-RS and indices. Add the PSSCH DM-RS symbols to the subframe.

`subframe(ltePSSCHDRSIndices(ue)) = ltePSSCHDRS(ue);`

Estimate Channel Characteristics

Estimate the channel characteristics by using the received resource grid containing PSSCH DM-RS symbols.

• Add noise to the transmitted signal

• Perform sidelink SC-FDMA demodulation and channel estimation

• View the noise estimate

```txWaveform = lteSLSCFDMAModulate(ue,subframe); rxWaveform = awgn(txWaveform,15,'measured'); rxGrid = lteSLSCFDMADemodulate(ue,rxWaveform); [hest,noiseest] = lteSLChannelEstimatePSSCH(ue,cec,rxGrid); noiseest```
```noiseest = 0.0026 ```

## Input Arguments

collapse all

User equipment settings, specified as a structure containing these fields.

Sidelink mode, specified as `'D2D'` or `'V2X'`.

Data Types: `char` | `string`

Number of sidelink resource blocks, specified as an integer scalar from 6 to 110.

Example: `6`, which corresponds to a channel bandwidth of 1.4 MHz.

Data Types: `double`

Sidelink group destination identity, specified as an integer in the interval [0, 255].

This field is the lower eight bits of the full 24-bit ProSe Layer-2 group destination ID. This field and the `NSubframePSSCH` field control the value of the scrambling sequence at the start of each subframe. This field is required only for D2D sidelink.

Data Types: `double`

Cyclic prefix length, specified as `'Normal'` or `'Extended'`.

Data Types: `char` | `string`

V2X scrambling identity, specified as an integer scalar. `NXID` is the 16 bit CRC associated with the PSCCH SCI grant. It is only required for V2X sidelink.

Data Types: `double`

PSSCH subframe number in the PSSCH subframe pool, specified as an integer scalar. (${n}_{\text{ssf}}^{\text{PSSCH}}$)

`NSubframePSSCH` and `NSAID` control the values of the scrambling sequence. It is only required for D2D sidelink.

Data Types: `double`

Zero-based physical resource block (PRB) indices, specified as an integer column vector or a two-column integer matrix.

The PSSCH is intended to be transmitted in the same PRB in each slot of a subframe. Therefore, specifying `PRBSet` as a single column of PRB indices is recommended. However, for a nonstandard slot-hopping PRB allocation, `PRBSet` can be specified as a two-column matrix of indices corresponding to slot-wise resource allocations for PSSCH.

Data Types: `double`

Data Types: `struct`

Received resource element grid, specified as an NSC-by-NSym-by-NR array of complex symbols.

• NSC is the number of subcarriers.

• NSym = NSF × NSymPerSF = `1` × NSymPerSF

• NSF is the total number of subframes. For this function `rxgrid` must contain one subframe.

• NSymPerSF is the number of SC-FDMA symbols per subframe.

• For normal cyclic prefix, a subframe contains 14 SC-FDMA symbols.

• For extended cyclic prefix, a subframe contains 12 SC-FDMA symbols.

• NR is the number of receive antennas.

Data Types: `double`
Complex Number Support: Yes

PSSCH channel estimation settings, specified as a structure that can contain these fields.

Size of frequency window, specified as an integer that is odd or a multiple of 12. `FreqWindow` is the number of resource elements (REs) used to average over frequency.

Data Types: `double`

Size of time window, specified as an odd integer. `TimeWindow` is the number of resource elements (REs) used to average over time.

Data Types: `double`

Type of 2-D interpolation used during interpolation, specified as one of these supported choices.

ValueDescription
`'nearest'`Nearest neighbor interpolation
`'linear'`Linear interpolation
`'natural'`Natural neighbor interpolation
`'cubic'`Cubic interpolation
`'v4'`MATLAB® 4 `griddata` method
`'none'`Disables interpolation

For details, see `griddata`.

Data Types: `char` | `string`

Type of pilot averaging, specified as `'UserDefined'` or `'TestEVM'`.

The `'UserDefined'` pilot averaging uses a rectangular kernel of size `cec`.`FreqWindow`-by-`cec`.`TimeWindow` and performs a 2-D filtering operation on the pilots. Pilots near the edge of the resource grid are averaged less because they have no neighbors outside of the grid.

For `cec`.`FreqWindow` = 12×X (that is, any multiple of 12) and `cec`.`TimeWindow` = 1, the estimator enters a special case where an averaging window of (12×X)-in-frequency is used to average the pilot estimates. The averaging is always applied across (12×X) subcarriers, even at the upper and lower band edges. Therefore, the first (6×X) symbols at the upper and lower band edge have the same channel estimate. This operation ensures that averaging is always done on 12 (or a multiple of 12) symbols. The `'TestEVM'` pilot averaging ignores other structure fields in `cec`, and for the transmitter EVM testing, it follows the method described in TS 36.101, Annex F.

Data Types: `char` | `string`

Data Types: `struct`

## Output Arguments

collapse all

Channel estimate between each transmit and receive antenna, returned as an NSC-by-NSym-by-NR array of complex symbols. NSC is the total number of subcarriers, NSym is the number of SC-FDMA symbols, and NR is the number of receive antennas.

For `cec`.`InterpType` = `'none'`,

• No interpolation between the pilot symbol estimates is performed and no virtual pilots are created

• `hest` contains channel estimates in the locations of transmitted DM-RS symbols for each received antenna and all other elements of `hest` are `0`

• The averaging of pilot symbol estimates, described by `cec`.`TimeWindow` and `cec`.`FreqWindow`, is still performed

Noise estimate, returned as a numeric scalar. When `cec`.`PilotAverage` is `'UserDefined'`, this output is the power spectral density of the noise present on the estimated channel response coefficients. Otherwise, `noiseest` returns `0`.

## References

[1] 3GPP TS 36.101. “Evolved Universal Terrestrial Radio Access (E-UTRA); User Equipment (UE) Radio Transmission and Reception.” 3rd Generation Partnership Project; Technical Specification Group Radio Access Network. URL: https://www.3gpp.org.

Introduced in R2017a