Main Content

lteULPerfectChannelEstimate

Uplink perfect channel estimation

Description

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.

example

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;

Pass the waveform through a fading channel, generating time-domain receiver samples.

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

Generate frequency-domain receiver data by demodulating the received time-domain waveform.

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

Visualize Effect of Fading Channel

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

Figure contains 4 axes objects. Axes object 1 with title Transmitted Grid contains an object of type surface. Axes object 2 with title Received Grid contains an object of type surface. Axes object 3 with title Perfect Channel Estimate contains an object of type surface. Axes object 4 with title Recovered Grid contains an object of type surface.

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, NRBUL, 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.

Version History

Introduced in R2014a