nrCSIReportSRS
R2026bSyntax
Description
[
returns the uplink channel state information (CSI) report CSI,CSIInfo] = nrCSIReportSRS(carrier,srs,pusch,h,rcov)CSI
containing the rank, transmit precoding matrix indicator (TPMI), and modulation and
coding scheme (MCS) index. The function also returns an additional CSI information
CSIInfo.
Specify the carrier configuration carrier, sounding reference
signal (SRS) configuration srs, physical uplink shared channel
(PUSCH) configuration pusch, uplink channel estimation information
h, and inter-cell interference with noise covariance
rcov.
Examples
Create a carrier configuration object.
carrier = nrCarrierConfig;
Configure the SRS with 4 ports.
srs = nrSRSConfig; srs.NumSRSPorts = 4;
Configure the PUSCH for codebook-based transmission.
pusch = nrPUSCHConfig;
pusch.TransmissionScheme = "codebook";
pusch.NumAntennaPorts = srs.NumSRSPorts;Configure the number of transmit and receive antennas.
nTxAnts = max(srs.NumSRSPorts); nRxAnts = nTxAnts;
Generate SRS indices and symbols, and map to the resource grid.
srsInd = nrSRSIndices(carrier,srs); srsSym = nrSRS(carrier,srs); txGrid = nrResourceGrid(carrier,nTxAnts); txGrid(srsInd) = srsSym;
Perform OFDM modulation.
OFDMInfo = nrOFDMInfo(carrier); txWaveform = nrOFDMModulate(carrier,txGrid);
Configure and pass through a TDL-C channel. Swap transmit and receive sides for uplink.
channel = nrTDLChannel; % Swap transmit and receive sides as the default TDL channel is configured for downlink transmissions. swapTransmitAndReceive(channel); % Configure the channel channel.NumTransmitAntennas = nTxAnts; channel.NumReceiveAntennas = nRxAnts; channel.SampleRate = OFDMInfo.SampleRate; channel.DelayProfile = "TDL-C"; channel.DelaySpread = 300e-9; channel.MaximumDopplerShift = 5; chInfo = info(channel); % Get the maximum channel delay maxChDelay = chInfo.MaximumChannelDelay; % Pass the time-domain waveform through the channel rxWaveform = channel([txWaveform; zeros(maxChDelay,nTxAnts)]);
Perform timing synchronization.
offset = nrTimingEstimate(carrier,rxWaveform,srsInd,srsSym); rxWaveform = rxWaveform(1+offset:end,:);
Add AWGN and perform OFDM demodulation.
SNRdB = 20;
SNR = 10^(SNRdB/10);
sigma = 1/(sqrt(2.0*channel.NumReceiveAntennas*double(OFDMInfo.Nfft)*SNR));
rng('default');
noise = sigma*complex(randn(size(rxWaveform)),randn(size(rxWaveform)));
rxWaveform = rxWaveform + noise;
rxGrid = nrOFDMDemodulate(carrier,rxWaveform);Perform channel estimation.
[H,Rcov] = nrChannelEstimate(rxGrid,srsInd,srsSym,CDMLengths=[2 1]);
Obtain the CSI report.
SubbandSize = 20;
rankRestriction = [1 1 0 0 1 1 1 1];
MCSFormatIndicator = "subband";
[CSI,CSIInfo] = nrCSIReportSRS(carrier,srs,pusch,H,Rcov,SubbandSize=SubbandSize,MCSFormatIndicator=MCSFormatIndicator,RankRestriction=rankRestriction)CSI = struct with fields:
Rank: 1
TPMI: 25
MCSIndex: [4×1 double]
CSIInfo = struct with fields:
PrecodingMatrix: [4×1 double]
SINRPerSubband: 1.6812
EffectiveSINR: [4×1 double]
Input Arguments
Carrier configuration parameters for a specific OFDM numerology, specified as
an nrCarrierConfig
object. This function uses only these properties of the
nrCarrierConfig object.
SRS configuration, specified as an nrSRSConfig
object.
PUSCH configuration, specified as an nrPUSCHConfig object.
This function uses only these properties of the nrPUSCHConfig object.
pusch.DMRS.DMRSEnhancedR18pusch.DMRS.DMRSLengthpusch.DMRS.DMRSConfigurationType
To enable this function, you must satisfy these property conditions of the
nrPUSCHConfig object.
Set the
TransmissionSchemeproperty to"codebook".Set the
Interlacingproperty tofalse.
Estimated uplink channel information, specified as a 4-D numeric array of either of these size.
K-by-L-by-R-by-P — Applies when channel estimates are available at each subcarrier location. K is the number of subcarriers in the carrier resource grid, L is the number of OFDM symbols spanning one slot, R is the number of receive antennas, and P is the number of SRS antenna ports.
NSizeGrid-by-L-by-R-by-P — Applies when channel estimates are available for each resource block (RB). NSizeGrid is the number of RBs in the carrier resource grid.
To use a three-antenna-port PUSCH configuration, specify h
as a K-by-L-by-R-by-3
array and set the NumSRSPorts property of
srs to 4. The function assumes only the first three SRS
ports for channel sounding and mutes the fourth port. The uplink CSI report
assumes a three-antenna-port PUSCH.
Data Types: double
Complex Number Support: Yes
Estimated inter-cell interference plus noise covariance, specified as one of these options.
Nonnegative scalar — Applies when there is no inter-cell interference, just noise.
4-D numeric array — Applies when you consider inter-cell interference. Specify
rcovas a 4-D array of either of these size.K-by-L-by-R-by-R — Applies when inter-cell interference estimates are available at each subcarrier location.
NSizeGrid-by-L-by-R-by-R — Applies when inter-cell interference estimates are available for each RB.
1-by-1-by- R-by-R — Applies when inter-cell interference information is unavailable.
Specify
handrcovat the same granularity level. Specify both inputs either at the resource element level, that is per subcarrier and symbol, or at the resource block level, that is, per resource block and symbol.
Data Types: double
Complex Number Support: Yes
Name-Value Arguments
Specify optional pairs of arguments as
Name1=Value1,...,NameN=ValueN, where Name is
the argument name and Value is the corresponding value.
Name-value arguments must appear after other arguments, but the order of the
pairs does not matter.
Example: MCSFormatIndicator="subband" sets the MCS format as
subband.
MCS table used for MCS index calculation, specified as one of these options.
When transform precoding is disabled:
"qam64"— MCS index table corresponding to TS 38.214 Table 5.1.3.1-1"qam256"— MCS index table corresponding to TS 38.214 Table 5.1.3.1-2"qam64LowSE"— MCS index table corresponding to TS 38.214 Table 5.1.3.1-3
When transform precoding is enabled:
"qam64"— MCS index table corresponding to TS 38.214 Table 6.1.4.1-1"qam64LowSE"— MCS index table corresponding to TS 38.214 Table 6.1.4.1-2
The "qam256" option is not valid when transform precoding
is enabled.
Data Types: char | string
Mode of TPMI reporting, specified as "wideband" or
"subband". When set to
"wideband", the function reports a single TPMI for the entire
bandwidth. When set to "subband", the function reports a TPMI
value for each subband.
Data Types: char | string
Mode of MCS reporting, specified as "wideband" or
"subband". When set to
"wideband", the function reports a single MCS index for the
entire bandwidth. When set to "subband", the function reports
MCS index values for the wideband and for each subband.
Data Types: char | string
Rank restriction, specified as a binary-valued vector of length 8. The first element corresponds to rank 1, the second element corresponds to rank 2, and so on.
A value of 0 disables the corresponding rank from being
used in the CSI calculation, whereas a value of 1 enables
the corresponding rank to be used.
Data Types: double | logical
Output Arguments
Uplink CSI report, returned as a structure containing these fields.
| Fields | Description |
|---|---|
Rank | Rank indicator, returned as a scalar indicating the optimal number of transmission layers to maximize spectral efficiency for the given channel conditions and interference plus noise covariance input. |
TPMI | Transmit precoding matrix indicator (0-based), returned
as a scalar when |
MCSIndex | Modulation and coding scheme index (0-based), returned as
a matrix. The matrix size depends on the
|
Data Types: struct
Additional CSI information, returned as a structure with these fields.
| Fields | Description |
|---|---|
PrecodingMatrix | Precoding matrix corresponding to the
|
SINRPerSubband | Linear signal-to-noise-plus-interference ratio (SINR)
values per subband for the selected precoder matrix from the
codebook, returned as a matrix of size
|
EffectiveSINR | Effective SINR values in dB, calculated using the
received bit mutual information rate (RBIR) based effective SINR
mapping (ESM) method, returned as a matrix. The matrix size
depends on the
Returned as a matrix of size
( |
Data Types: struct
References
[1] 3GPP TS 38.211. “NR; Physical channels and modulation.” 3rd Generation Partnership Project; Technical Specification Group Radio Access Network.
Extended Capabilities
Usage notes and limitations:
nrCSIReportSRS function supports MEX code generation only.
Refer to the usage notes and limitations in the C/C++ Code Generation section. The same usage notes and limitations apply to GPU code generation.
Version History
Introduced in R2026b
See Also
Functions
Objects
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)