lteULPerfectChannelEstimate
Uplink perfect channel estimation
Syntax
Description
performs perfect channel estimation for a system configuration given
user-equipment-specific (UE-specific) settings hest
= lteULPerfectChannelEstimate(ue
,channel
)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.
Examples
Perform Uplink Perfect Channel Estimation
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 Time Offset Waveform
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')
Perform Uplink Perfect Channel Estimation for NB-IoT configuration
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
ue
— UE-specific settings
structure
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.
NULRB
— Number of uplink resource blocks
integer in the interval [6, 110]
Number of uplink resource blocks, , 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
CyclicPrefixUL
— Cyclic prefix length
'Normal'
(default) | 'Extended'
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
NTxAnts
— Number of transmit antennas
1
(default) | 2
| 4
Number of transmit antennas,
NTX, specified as
1
, 2
, or
4
.
Data Types: double
TotSubframes
— Total number of subframes to generate
1
(default) | nonnegative integer
Total number of subframes to generate, specified as a nonnegative integer.
Data Types: double
NBULSubcarrierSpacing
— NB-IoT uplink subcarrier spacing
'3.75kHz'
| '15kHz'
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
TotSlots
— Total number of slots to generate
1
(default) | nonnegative integer
Total number of slots to generate, specified as a nonnegative integer.
Data Types: double
Data Types: struct
channel
— Propagation channel configuration structure
structure
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.
NRxAnts
— Number of receive antennas
positive integer
Number of receive antennas, NRX, specified as a positive integer.
Data Types: double
MIMOCorrelation
— Correlation between UE and eNodeB antennas
'Low'
| 'Medium'
| 'UplinkMedium'
| 'High'
| 'Custom'
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-definedTxCorrelationMatrix
andRxCorrelationMatrix
Data Types: char
| string
NormalizeTxAnts
— Transmit antenna number normalization
'On'
(default) | 'Off'
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
DelayProfile
— Delay profile model
'EPA'
| 'EVA'
| 'ETU'
| 'Custom'
| 'Off'
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
DopplerFreq
— Maximum Doppler frequency
nonnegative scalar
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
SamplingRate
— Sampling rate of input signal
nonnegative scalar
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
InitTime
— Fading process time offset
nonnegative scalar
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
NTerms
— Number of oscillators used in fading path modeling
16 (default) | power of two
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
ModelType
— Rayleigh fading model type
'GMEDS'
(default) | 'Dent'
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
NormalizePathGains
— Model output normalization indicator
'On'
(default) | 'Off'
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
InitPhase
— Phase initialization for sinusoidal components of model
'Random'
(default) | real-valued scalar | 4-D array
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 theSeed
fieldA 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
Seed
— Random number generator seed
real-valued scalar
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
AveragePathGaindB
— Average gains of the discrete paths
real-valued vector
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
PathDelays
— Delays of discrete paths
real-valued vector
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
TxCorrelationMatrix
— Correlation between each of the transmit antennas
NTX-by-NTX
complex-valued matrix
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
RxCorrelationMatrix
— Correlation between each of the receive antennas
NRX-by-NRX
complex-valued matrix
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
offset
— Timing offset
nonnegative integer
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
chs
— NPUSCH information
structure
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
.
NBULSubcarrierSet
— NB-IoT uplink subcarrier indices
vector of nonnegative integers (default) | nonnegative integer
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
— Modulation type
'BPSK'
| 'QPSK'
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
NULSlots
— Number of slots per resource unit
positive integer
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
NRU
— Number of RUs
positive integer
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
NRep
— Number of repetitions for codeword
nonnegative integer
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
SlotIdx
— Relative slot index in an NPUSCH bundle
0
(default) | nonnegative integer
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
hest
— Perfect channel estimate
complex-valued 4-D array
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
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)