# lteULPerfectChannelEstimate

## Syntax

``hest = lteULPerfectChannelEstimate(ue,channel)``
``hest = lteULPerfectChannelEstimate(ue,channel,offset)``
``hest = lteULPerfectChannelEstimate(ue,chs,channel)``
``hest = lteULPerfectChannelEstimate(ue,chs,channel,offset)``

## Description

example

````hest = lteULPerfectChannelEstimate(ue,channel)` performs perfect channel estimation for a system configuration given user-equipment-specific (UE-specific) settings `ue` and propagation channel configuration `channel`. The perfect channel estimates are produced only for fading channel models created using the `lteFadingChannel` function. This function provides a perfect multiple-input-multiple-output (MIMO) channel estimate after single-carrier frequency-division multiple access (SC-FDMA) modulation. To obtain this estimate, the function sets the channel with the specified configuration and sends a set of known symbols through that channel for each transmit antenna in turn.```

example

````hest = lteULPerfectChannelEstimate(ue,channel,offset)` performs perfect channel estimation for the timing and frequency offset specified by `offset`. Specifying `offset` guarantees that `hest` is the channel that results when the receiver is precisely synchronized. ```

example

````hest = lteULPerfectChannelEstimate(ue,chs,channel)` performs perfect channel estimation for channel transmission configuration `chs`. This syntax supports SC-FDMA for LTE, single-tone narrowband Internet of Things (NB-IoT), and multitone NB-IoT.```
````hest = lteULPerfectChannelEstimate(ue,chs,channel,offset)` performs perfect channel estimation for the channel transmission configuration and the specified timing and frequency offset.```

## Examples

collapse all

Perform uplink perfect channel estimation for a chosen propagation channel configuration.

Initialize UE-specific settings, specifying fields appropriate for an LTE uplink configuration.

```ue.NULRB = 6; ue.CyclicPrefixUL = 'Normal'; ue.NTxAnts = 2; ue.TotSubframes = 1;```

Specify propagation channel conditions.

```channel.Seed = 1; channel.DelayProfile = 'EPA'; channel.NRxAnts = 4; channel.DopplerFreq = 5.0; channel.MIMOCorrelation = 'Low'; channel.InitPhase = 'Random'; channel.InitTime = 0.0; channel.ModelType = 'GMEDS'; channel.NTerms = 16; channel.NormalizeTxAnts = 'On'; channel.NormalizePathGains = 'On';```

Perform uplink perfect channel estimation and display the dimension of the channel estimate array.

```hest = lteULPerfectChannelEstimate(ue,channel); disp(size(hest));```
``` 72 14 4 2 ```

Perform uplink perfect channel estimation on a time offset waveform passed through a fading channel.

Configuration Initialization

Initialize UE-specific settings by specifying fields appropriate for an LTE uplink configuration.

```ue = lteRMCUL('A1-1','FDD',1); ue.NULRB = 10; ue.CyclicPrefixUL = 'Normal'; ue.NTxAnts = 4; ue.TotSubframes = 1;```

Specify the propagation channel configuration.

```channel.Seed = 1; channel.DelayProfile = 'EVA'; channel.NRxAnts = 2; channel.DopplerFreq = 5.0; channel.MIMOCorrelation = 'UplinkMedium'; channel.InitPhase = 'Random'; channel.InitTime = 0.0; channel.ModelType = 'GMEDS'; channel.NTerms = 16; channel.NormalizeTxAnts = 'On'; channel.NormalizePathGains = 'On';```

Waveform Processing

Create a waveform and add samples for channel delay.

```[txWaveform,txgrid,rmcCfg] = lteRMCULTool(ue,[1;0;0;1]); txWaveform = [txWaveform; zeros(25,4)]; channel.SamplingRate = rmcCfg.SamplingRate;```

`rxWaveform = lteFadingChannel(channel,txWaveform);`

Determine Timing Offset

Use the `lteULFrameOffset` function to estimate time offset.

```offset = lteULFrameOffset(ue,ue.PUSCH,rxWaveform); disp(offset);```
``` 8 ```

Modify the received waveform to account for the timing offset.

`rxWaveform = rxWaveform(1+offset:end,:);`

Demodulation and Uplink Perfect Channel Estimation

`grid = lteSCFDMADemodulate(ue,rxWaveform);`

Perform uplink perfect channel estimation with the specified time offset.

```hest = lteULPerfectChannelEstimate(ue,channel,offset); disp(size(hest));```
``` 120 14 2 4 ```

Plot resource element grids to show the impact of the fading channel on the transmitted signal and recovery of the signal using the perfect channel estimate.

The output channel estimate is a 4-D array. The input specified ten resource blocks leading to 120 subcarriers per symbol. Normal cyclic prefix results in 14 symbols per subframe. The third and fourth dimensions represent the two receive and four transmit antennas specified in the input configuration structures.

Comparing the transmitted grid to the recovered grid shows how equalization of the received grid with the perfect channel estimate recovers the transmission.

```recoveredgrid = grid./hest; subplot(2,2,1) surf(abs(txgrid(:,:,1,1))) title('Transmitted Grid') subplot(2,2,2) surf(abs(grid(:,:,1,1))) title('Received Grid') subplot(2,2,3) surf(abs(hest(:,:,1,1))) title('Perfect Channel Estimate') subplot(2,2,4) surf(abs(recoveredgrid(:,:,1,1))) title('Recovered Grid')```

Perform uplink perfect channel estimation for a chosen propagation channel configuration.

Initialize UE-specific settings, specifying fields appropriate for an NB-IoT uplink configuration.

```ue.NBULSubcarrierSpacing = '15kHz'; ue.TotSlots = 10;```

Specify propagation channel conditions.

```channel.Seed = 5; channel.DelayProfile = 'EPA'; channel.NRxAnts = 2; channel.DopplerFreq = 5.0; channel.MIMOCorrelation = 'Low'; channel.InitPhase = 'Random'; channel.InitTime = 0.0; channel.ModelType = 'GMEDS'; channel.NTerms = 16; channel.NormalizeTxAnts = 'On'; channel.NormalizePathGains = 'On';```

Specify NPUSCH configuration information.

```chs.NBULSubcarrierSet = 0; chs.Modulation = 'QPSK'; chs.NULSlots = 2; chs.NRU = 2; chs.NRep = 1; chs.SlotIdx = 0;```

Perform uplink perfect channel estimation and display the dimension of the channel estimate array.

```hest = lteULPerfectChannelEstimate(ue,chs,channel); disp(size(hest));```
``` 12 70 2 ```

## Input Arguments

collapse all

UE-specific settings, specified as a structure. The fields you specify in `ue` determine whether the function performs channel estimation for an LTE or NB-IoT configuration. To indicate an LTE configuration, specify the `NULRB` field. To indicate an NB-IoT configuration, specify the `NBULSubcarrierSpacing` field. The `NTxAnts` field is required for both LTE and NB-IoT configurations. The other fields in `ue` are optional. The `CyclicPrefixUL` and `TotSubframes` fields are applicable only for an LTE configuration. The `TotSlots` field is applicable only for an NB-IoT configuration.

Number of uplink resource blocks, ${N}_{\text{RB}}^{\text{UL}}$, specified as an integer in the interval [6, 110]. To perform channel estimation for an LTE configuration, you must specify this field.

Data Types: `double`

Cyclic prefix length, specified as `'Normal'` or `'Extended'`. This field is optional.

#### Dependencies

This field applies only when you choose an LTE configuration by specifying the `NULRB` field.

Data Types: `char`

Number of transmit antennas, NTX, specified as `1`, `2`, or `4`.

Data Types: `double`

Total number of subframes to generate, specified as a nonnegative integer.

Data Types: `double`

NB-IoT uplink subcarrier spacing, specified as `'3.75kHz'` or `'15kHz'`. To set a subcarrier spacing of 3.75 kHz, specify `NBULSubcarrierSpacing` as `'3.75kHz'`. To set a subcarrier spacing of 15 kHz, specify `NBULSubcarrierSpacing` as `'15kHz'`.

To perform channel estimation for an NB-IoT configuration, you must specify this field. To indicate an LTE configuration, omit this field.

Data Types: `char`

Total number of slots to generate, specified as a nonnegative integer.

Data Types: `double`

Data Types: `struct`

Propagation channel configuration, specified as a structure. This argument must contain all the fields required to parameterize the fading channel model, that is, to call the `lteFadingChannel` function.

Note

Before execution of the channel, `lteULPerfectChannelEstimate` sets the `SamplingRate` field internally to the sampling rate of the time domain waveform passed to the `lteFadingChannel` function for filtering. Therefore, this `channel` input does not require the `SamplingRate` field. If one is included, it is not used.

Number of receive antennas, NRX, specified as a positive integer.

Data Types: `double`

Correlation between UE and Evolved Node B (eNodeB) antennas, specified as one of these values:

• `'Low'` – No correlation between antennas

• `'Medium'` – Correlation level is applicable to tests defined in TS 36.101 [1]

• `'UplinkMedium'` – Correlation level is applicable to tests defined in TS 36.104 [2]

• `'High'` – Strong correlation between antennas

• `'Custom'` – Apply user-defined `TxCorrelationMatrix` and `RxCorrelationMatrix`

Data Types: `char` | `string`

Transmit antenna number normalization, specified as `'On'` or `'Off'`. If you specify `NormalizeTxAnts` as `'On'`, `lteULPerfectChannelEstimate` normalizes the model output by 1/√NTX. Normalization by the number of transmit antennas ensures that the output power per receive antenna is unaffected by the number of transmit antennas. If you specify `NormalizeTxAnts` as `'Off'`, `lteULPerfectChannelEstimate` does not perform normalization. This field is optional.

Data Types: `char` | `string`

Delay profile model, specified as `'EPA'`, `'EVA'`, `'ETU'`, `'Custom'`, or `'Off'`. For more information, see Propagation Channel Models.

Setting `DelayProfile` to `'Off'` switches off fading completely and implements a static MIMO channel model. In this case, the antenna geometry corresponds to the `MIMOCorrelation` and `NRxAnts` fields, and the number of transmit antennas. The temporal part of the model for each link between transmit and receive antennas consists of a single path with zero delay and constant unit gain.

Data Types: `char` | `string`

Maximum Doppler frequency, in Hz, specified as a nonnegative scalar.

#### Dependencies

This field applies only when you specify the `DelayProfile` field as a value other than `'Off'`.

Data Types: `double`

Sampling rate of input signal, specified as a nonnegative scalar.

#### Dependencies

This field applies only when you specify the `DelayProfile` field as a value other than `'Off'`.

Data Types: `double`

Fading process time offset, in seconds, specified as a nonnegative scalar.

#### Dependencies

This field applies only when you specify the `DelayProfile` field as a value other than `'Off'`.

Data Types: `double`

Number of oscillators used in fading path modeling, specified as a power of two. This field is optional

#### Dependencies

This field applies only when you specify the `DelayProfile` field as a value other than `'Off'`.

Data Types: `double`

Rayleigh fading model type, specified as `'GMEDS'` or `'Dent'`. To model Rayleigh fading using the generalized method of exact Doppler spread (GMEDS) described in [4], specify `ModelType` as `'GMEDS'`. To model Rayleigh fading using the modified Jakes fading model described in [3], specify `ModelType` as `'Dent'`. This field is optional.

Note

Specifying `ModelType` as `'Dent'` is not recommended.

#### Dependencies

This field applies only when you specify the `DelayProfile` field as a value other than `'Off'`.

Data Types: `char` | `string`

Model output normalization indicator, specified as `'On'` or `'Off'`. To normalize the model output such that the average power is unity, specify `NormalizePathGains` as `'On'`. To return the average output power as the sum of the powers of the taps of the delay profile, specify `NormalizePathGains` as `'Off'`. This field is optional.

#### Dependencies

This field applies only when you specify the `DelayProfile` field as a value other than `'Off'`.

Data Types: `char` | `string`

Phase initialization for the sinusoidal components of the model, specified as one of these values:

• `'Random'` – Randomly initialize the phases according to the value you specify in the `Seed` field

• A real-valued scalar – Specify the single initial value of the phases of all components, in radians

• An N-by-L-by-NTX-by-NRX array – Explicitly initialize the phase, in radians, of each component. In this case, N is the number of phase initialization values per path and L is the number of paths

Note

• When you specify `ModelType` as `'GMEDS'`, N = 2×`NTerms`.

• When you specify `ModelType` as `'Dent'`, N = `NTerms`.

Data Types: `double` | `char` | `string`

Random number generator seed, specified as a real-valued scalar. To use a random seed, specify `Seed` as `0`.

Note

Seed values in the interval [0, 231 – 1 – (K(K – 1)/2)], where K = NTX × NRX and is the product of the number of transmit and receive antennas, are recommended. Seed values outside of this interval are not guaranteed to give distinct results.

#### Dependencies

This field applies only when you specify the `DelayProfile` field as a value other than `'Off'` and the `InitPhase` field as `'Random'`.

Data Types: `double`

Average gains of the discrete paths, in dB, specified as a real-valued vector.

#### Dependencies

This field applies only when you specify the `DelayProfile` field as `'Custom'`.

Data Types: `double`

Delays of the discrete paths, in seconds, specified as a real-valued vector.

#### Dependencies

This field applies only when you specify the `DelayProfile` field as `'Custom'`.

Data Types: `double`

Correlation between each of the transmit antennas, specified as an NTX-by-NTX complex-valued matrix.

#### Dependencies

This field applies only when you specify the `MIMOCorrelation` field as `'Custom'`.

Data Types: `double`
Complex Number Support: Yes

Correlation between each of the receive antennas, specified as an NRX-by-NRX complex-valued matrix.

#### Dependencies

This field applies only when you specify the `MIMOCorrelation` field as `'Custom'`.

Data Types: `double`
Complex Number Support: Yes

Data Types: `struct`

Timing offset, in samples, specified as a nonnegative integer. The timing offset is specified from the start of the output of the channel to the estimated SC-FDMA demodulation starting point. Specify the timing offset, when known, to obtain the perfect channel estimate as seen by a synchronized receiver. Use the `lteULFrameOffset` function to derive the value for `offset`.

Data Types: `double`

NPUSCH information, specified as a structure. For an NB-IoT configuration, you can set additional uplink-specific parameters by specifying the NB-IoT-specific fields in `chs`. Except for the `NBULSubcarrierSet` field, the fields in `chs` are applicable either when `ue.NBULSubcarrierSpacing` is `'3.75kHz'` or when `ue.NBULSubcarrierSpacing` is `'15kHz'` and `length(NBULSubcarrierSet)` is `1`.

NB-IoT uplink subcarrier indices, specified as a vector of nonnegative integers in the interval [0, 11] or a nonnegative integer in the interval [0, 47]. The indices are in zero-based form. To use `lteULPerfectChannelEstimate` for a single-tone NB-IoT configuration, you must specify `NBULSubcarrierSet` as a scalar. If you do not specify `NBULSubcarrierSet`, `lteULPerfectChannelEstimate` returns an estimate for a multi-tone NB-IoT configuration by default.If you specify `ue.NBULSubcarrierSpacing` as `'15kHz'`, this field is required.

Data Types: `double`

Modulation type, specified as `'BPSK'` or `'QPSK'`. For binary phase shift keying (BPSK), specify `Modulation` as `'BPSK'`. For quadrature phase shift keying (QPSK), specify `Modulation` as `'QPSK'`.

Data Types: `char`

Number of slots per resource unit (RU), specified as a positive integer. To use `lteULPerfectChannelEstimate` for a single-tone NB-IoT configuration, you must specify this field.

Data Types: `double`

Number of RUs, specified as a positive integer. To use `lteULPerfectChannelEstimate` for a single-tone NB-IoT configuration, you must specify this field.

Data Types: `double`

Number of repetitions for a codeword, specified as a nonnegative integer. To use `lteULPerfectChannelEstimate` for a single-tone NB-IoT configuration, you must specify this field.

Data Types: `double`

Relative slot index in an NPUSCH bundle, specified as a nonnegative integer. This field determines the zero-based relative slot index in a bundle of time slots for transmission of a transport block or control information bit. This field is optional.

Data Types: `double`

## Output Arguments

collapse all

Perfect channel estimate, returned as an NSC-by-NSYM-by-NRX-by-NTX complex-valued array, where NSC is the number of subcarriers and NSYM is the number of SC-FDMA symbols.

Data Types: `double`
Complex Number Support: Yes

## References

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

[2] 3GPP TS 36.104. “Base Station (BS) radio transmission and reception.” 3rd Generation Partnership Project; Technical Specification Group Radio Access Network; Evolved Universal Terrestrial Radio Access (E-UTRA).

[3] Dent, P., Bottomley, G. E., and Croft, T. “Jakes Fading Model Revisited.” Electronics Letters. Vol. 29, Number 13, 1993, pp. 1162–1163.

[4] Pätzold, M., Wang, C., and Hogstad, B. O. “Two New Sum-of-Sinusoids-Based Methods for the Efficient Generation of Multiple Uncorrelated Rayleigh Fading Waveforms.” IEEE Transactions on Wireless Communications. Vol. 8, Number 6, 2009, pp. 3122–3131.

Introduced in R2014a