lteSLChannelEstimatePSSCH
PSSCH sidelink channel estimation
Syntax
Description
[
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.hest
] = lteSLChannelEstimatePSSCH(ue
,rxgrid
)
Examples
Estimate Channel Using PSSCH DM-RS and Default CE Settings
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.
Perform sidelink SC-FDMA modulation
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 Channel Using PSSCH DM-RS
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.
Perform sidelink SC-FDMA modulation
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 Channel and Noise Using PSSCH DM-RS
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.
Perform sidelink SC-FDMA modulation
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.0027
Input Arguments
ue
— UE-specific settings
structure
User equipment settings, specified as a structure containing these fields.
SidelinkMode
— Sidelink mode
'D2D'
(default) | 'V2X'
| optional
Sidelink mode, specified as 'D2D'
or
'V2X'
.
Data Types: char
| string
NSLRB
— Number of sidelink resource blocks
integer scalar from 6 to 110
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
NSAID
— Sidelink group destination identity
integer in the interval [0, 255]
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
CyclicPrefixSL
— Cyclic prefix length
'Normal'
(default) | 'Extended'
| optional
Cyclic prefix length, specified as 'Normal'
or 'Extended'
.
Data Types: char
| string
NXID
— V2X scrambling identity
integer scalar
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
NSubframePSSCH
— PSSCH subframe number
integer scalar
PSSCH subframe number in the PSSCH subframe pool, specified as an integer scalar ().
NSubframePSSCH
and NSAID
control the values of the
scrambling sequence. It is only required for D2D
sidelink.
Data Types: double
PRBSet
— Zero-based physical resource block indices
integer column vector | two-column integer matrix
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
rxgrid
— Received resource element grid
3-D array
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
× NSymPerSFNSF 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
cec
— PSSCH channel estimation settings
structure
PSSCH channel estimation settings, specified as a structure that can contain these fields.
FreqWindow
— Size of frequency window
integer
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
TimeWindow
— Size of time window
integer
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
InterpType
— Type of 2-D interpolation
'nearest'
| 'linear'
| 'natural'
| 'cubic'
| 'v4'
| 'none'
Type of 2-D interpolation used during interpolation, specified as one of these supported choices.
Value | Description |
---|---|
'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
PilotAverage
— Type of pilot averaging
'UserDefined'
(default) | 'TestEVM'
| optional
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
hest
— Channel estimate between each transmit and receive antenna
3-D array
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 ofhest
are0
The averaging of pilot symbol estimates, described by
cec
.TimeWindow
andcec
.FreqWindow
, is still performed
noiseest
— Noise estimate
numeric scalar
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.
Version History
Introduced in R2017a
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)