Main Content


CSI-RS-based physical layer measurements



    meas = nrCSIRSMeasurements(carrier,csirs,grid) returns physical layer measurements meas for a channel state information reference signal (CSI-RS), as defined in TS 38.215 Sections 5.1.2 and 5.1.4 [1]. The returned structure meas contains the reference signal received power (RSRP), received signal strength indicator (RSSI), and reference signal received quality (RSRQ). The input carrier specifies carrier configuration parameters for a specific OFDM numerology. The input csirs specifies CSI-RS resource configuration parameters for one or more zero-power (ZP) or non-zero-power (NZP) CSI-RS resources. The input grid specifies a carrier resource array.


    collapse all

    Create a carrier configuration object with default properties.

    carrier = nrCarrierConfig;

    Create a CSI-RS configuration object. Set the row number to 1 and the frequency density to 3.

    csirs = nrCSIRSConfig;
    csirs.RowNumber = 1;
    csirs.Density = 'three';

    Generate CSI-RS symbols and indices for the specified configurations. Map the symbols to the slot grid.

    ind = nrCSIRSIndices(carrier,csirs);
    sym = nrCSIRS(carrier,csirs);

    Initialize the carrier resource grid for one slot.

    ports = max(csirs.NumCSIRSPorts);
    txGrid = nrResourceGrid(carrier,ports);
    txGrid(ind) = sym;

    Perform OFDM modulation.

    txWaveform = nrOFDMModulate(carrier,txGrid);

    Apply two different levels of power scaling to the transmitted waveform.

    EsdBm1 = -50;
    rxWaveform1 = txWaveform * sqrt(10^((EsdBm1-30)/10));
    EsdBm2 = -10;
    rxWaveform2 = txWaveform * sqrt(10^((EsdBm2-30)/10));

    Perform OFDM demodulation on the two received waveforms.

    rxGrid1 = nrOFDMDemodulate(carrier,rxWaveform1);
    rxGrid2 = nrOFDMDemodulate(carrier,rxWaveform2);

    Perform CSI-RS measurements on the two received resource grids.

    meas1 = nrCSIRSMeasurements(carrier,csirs,rxGrid1)
    meas1 = struct with fields:
        RSRPPerAntenna: -50
        RSSIPerAntenna: -28.0688
        RSRQPerAntenna: -4.7712
    meas2 = nrCSIRSMeasurements(carrier,csirs,rxGrid2)
    meas2 = struct with fields:
        RSRPPerAntenna: -10.0000
        RSSIPerAntenna: 11.9312
        RSRQPerAntenna: -4.7712

    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.

    Carrier resource array, specified as a complex-valued array of size K-by-N-by-R.

    • K is the number of subcarriers.

    • N is the number of OFDM symbols.

    • R is the number of receive antennas.

    Data Types: single | double
    Complex Number Support: Yes

    Output Arguments

    collapse all

    CSI-RS-based physical layer measurements, returned as a structure containing these fields.

    RSRPPerAntennaReal-valued matrixMatrix of RSRP values in dBm relative to 1 milliwatt in 1 ohm
    RSSIPerAntennaReal-valued matrix

    Matrix of RSSI values in dBm relative to 1 milliwatt in 1 ohm

    RSRQPerAntenna Real-valued matrix

    Matrix of RSRQ values in dB

    The rows of these matrices correspond to receive antennas. The columns correspond to the CSI-RS resources specified in the input csirs.

    Data Types: struct


    [1] 3GPP TS 38.215. “NR; Physical layer measurements.” 3rd Generation Partnership Project; Technical Specification Group Radio Access Network.

    Extended Capabilities

    C/C++ Code Generation
    Generate C and C++ code using MATLAB® Coder™.

    Version History

    Introduced in R2022b