Hauptinhalt

nrCSIReportCSIRS

R2026b

Report downlink channel state information using CSI-RS

Since R2026b

    Description

    [CSIReport,CSIInfo] = nrCSIReportCSIRS(carrier,csirs,reportConfig,dmrsConfig,h,rcov) returns the channel state information (CSI) report CSIReport containing the rank indicator (RI), precoding matrix indicator (PMI), and channel quality indicator (CQI), as defined in 3GPP TS 38.214 section 5.2.2.2 [1]. The function also returns an additional CSI information CSIInfo.

    Specify the carrier configuration carrier, channel state information reference signal (CSI-RS) configuration csirs, CSI reporting configuration reportConfig, demodulation reference signal (DM-RS) configuration for physical downlink shared channel (PDSCH) dmrsConfig, estimated channel information h, and inter-cell interference with noise covariance rcov.

    example

    Examples

    collapse all

    Create a carrier configuration object.

    carrier = nrCarrierConfig;

    Create and configure the CSI-RS resource configuration object for two non-zero-power (NZP) CSI-RS resources.

    csirs = nrCSIRSConfig;
    csirs.CSIRSType = {"nzp","nzp"};
    csirs.RowNumber = [4 4];
    csirs.Density = {"one","one"};
    csirs.SubcarrierLocations = {0 0};
    csirs.SymbolLocations = {0,5};
    csirs.NumRB = 52;
    csirs.RBOffset = 0;
    csirs.CSIRSPeriod = [4 0];

    Create a PDSCH DMRS configuration object.

    pdschdmrs = nrPDSCHDMRSConfig;

    Configure the number of transmit and receive antennas.

    nTxAnts = max(csirs.NumCSIRSPorts);
    nRxAnts = nTxAnts;

    Generate CSI-RS indices and symbols, and map to the resource grid.

    csirsInd = nrCSIRSIndices(carrier,csirs);
    csirsSym = nrCSIRS(carrier,csirs);
    txGrid = nrResourceGrid(carrier,nTxAnts);
    txGrid(csirsInd) = csirsSym;

    Perform OFDM modulation.

    OFDMInfo = nrOFDMInfo(carrier);
    txWaveform = nrOFDMModulate(carrier,txGrid);

    Configure and pass through a TDL-C channel.

    channel = nrTDLChannel;
    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,csirsInd,csirsSym); % Timing offset
    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,csirsInd,csirsSym,CDMLengths=[2 1]);

    Configure CSI reporting and obtain the CSI report.

    reportConfig = nrCSIReportConfig;
    [CSI,CSIInfo] = nrCSIReportCSIRS(carrier,csirs,reportConfig,pdschdmrs,h,rcov)
    CSI = struct with fields:
            RI: 2
        PMISet: [1×1 struct]
           CQI: 9
    
    
    CSIInfo = struct with fields:
        PrecodingMatrix: [4×2 double]
         SINRPerSubband: [11.1543 13.0048]
          EffectiveSINR: 9.9581
    
    

    Input Arguments

    collapse all

    Carrier configuration parameters for a specific OFDM numerology, specified as an nrCarrierConfig object. This function uses only these properties of the nrCarrierConfig object.

    CSI-RS resource configuration parameters, specified as an nrCSIRSConfig object. This function uses only these properties of the nrCSIRSConfig object.

    When you specify multiple CSI-RS resources, the code division multiplexing (CDM) length and the number of configured ports must be the same for all resources.

    For better results, use the same CSI-RS resources used for channel estimation, because resource elements (REs) that do not contain the CSI-RS may have interpolated channel estimates.

    CSI reporting configuration, specified as an nrCSIReportConfig object. This argument specifies the parameters to report channel state information.

    DM-RS configuration for the physical downlink shared channel (PDSCH), specified as a nrPDSCHDMRSConfig object. This function uses only these properties of the nrPDSCHDMRSConfig object.

    Note

    The CSI reporting calculations assume that you set the DMRSLength property of the dmrsConfig object to the maximum length specified by the higher-layer DMRS configuration, as defined in 3GPP TS 38.214 Section 5.2.2.5.

    Estimated downlink 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 CSI-RS 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.

    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 rcov as 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 h and rcov at 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

    Output Arguments

    collapse all

    Channel state information report, returned as a structure containing these fields.

    FieldsDescription
    RI

    Rank indicator, returned as a scalar. This value represents the best possible number of transmission layers for the given channel and noise conditions. The valid range depends on the CodebookType property of the nrCSIReportConfig object.

    • When you set CodebookType to "type1SinglePanel", the valid values of RI are from 1 to 8.

    • When you set CodebookType to "type1MultiPanel" or "eType2", the valid values of RI are from 1 to 4.

    • When you set CodebookType to "Type2", the valid values of RI are 1 or 2.

    PMISet

    Precoding matrix indicator set, returned as a structure with these fields.

    FieldsDescription
    i1

    Wideband indication vector with values [i11 i12 i13].

    i2

    Subband indication vector with one value for each subband. In case of wideband mode, i2 is a scalar.

    Both indices use 1-based indexing.

    CQI

    Channel quality indicator, returned as a matrix. The matrix size depends on the CQIFormatIndicator property of the nrCSIReportConfig object.

    • When you set CQIFormatIndicator to "wideband", the size of the matrix is 1-by-numCodewords, where numCodewords is the number of codewords.

    • When you set CQIFormatIndicator to "subband", the size of the matrix is (numSubbands + 1)-by-numCodewords, where numSubbands is the number of subbands.

      The first row always contains the wideband CQI value, followed by subband differential CQI values for each subband, ranging from 0 to 3, computed based on the offset level defined in TS 38.214 Table 5.2.2.1-1.

    Data type of all three fields of CSIReport depend on the data types of the h and rcov inputs. The function returns fields as single if either h or rcov is of type single. Otherwise, the function returns fields as double.

    Data Types: struct

    Additional CSI information, returned as a structure with these fields.

    FieldsDescription
    PrecodingMatrix

    Precoding matrix corresponding to the PMISet field of the CSIReport argument, returned as a 3-D array of size P-by-RI-by-numSubbands.

    SINRPerSubband

    Linear signal-to-noise-plus-interference ratio (SINR) values for all layers corresponding to the subband precoder in each subband, returned as a matrix of size numSubbands-by-RI. The SINR value in each subband is formed by averaging SINR values at each RE across the subband.

    EffectiveSINR

    Effective SINR value in dB, returned as a matrix. The matrix size depends on the CQIFormatIndicator property of the nrCSIReportConfig object.

    • When you set CQIFormatIndicator to "wideband", the size of the matrix is 1-by-numCodewords

    • When you set CQIFormatIndicator to "subband", the size of the matrix is (numSubbands + 1)-by-numCodewords.

      The first row always contains the wideband effective SINR value, followed by effective SINR values for each subband.

    Data type of all three fields of CSIInfo depends on the data types of the h and rcov inputs. The function returns fields as single if either h or rcov is of type single. Otherwise, the function returns fields as double.

    Data Types: struct

    References

    [1] 3GPP TS 38.214. “NR; Physical layer procedures for data.” 3rd Generation Partnership Project; Technical Specification Group Radio Access Network.

    Extended Capabilities

    expand all

    Version History

    Introduced in R2026b