Main Content


Generate uplink SRS symbols

Since R2020a



[sym,info] = nrSRS(carrier,srs) returns uplink sounding reference signal (SRS) symbols, as defined in TS 38.211 section [1]. The input carrier specifies carrier configuration parameters for a specific OFDM numerology. The input srs specifies SRS configuration parameters. The function also returns the structure info, which contains information about the SRS generation process.

[sym,info] = nrSRS(carrier,srs,'OutputDataType',datatype) specifies the data type of the SRS symbols.


collapse all

Configure the carrier with default configuration parameters.

carrier = nrCarrierConfig;

Configure a two-port SRS transmission of 4 OFDM symbols.

srs = nrSRSConfig;
srs.NumSRSPorts = 2;
srs.NumSRSSymbols = 4;

The SRS must be located in the last six symbols of the slot. Set the time-domain starting position of the SRS to 8 and the bandwidth configuration index to 5.

srs.SymbolStart = 8;
srs.CSRS = 5; 

Generate SRS symbols for the specified carrier and SRS configuration parameters.

[sym,info] = nrSRS(carrier,srs);

Verify that the symbols vector contains two columns corresponding to the two-port transmission.

ans = 1×2

   480     2

Verify the number of SRS symbols per port.

ans = logical

Configure the SRS and the carrier with default configuration parameters.

carrier = nrCarrierConfig;
srs = nrSRSConfig;

Generate SRS symbols and indices using the specified carrier and SRS configuration parameters.

srsSym = nrSRS(carrier,srs);
srsInd = nrSRSIndices(carrier,srs);

Create a carrier grid corresponding to the number of subcarriers, OFDM symbols, and number of antenna ports specified in the configuration objects.

K = carrier.NSizeGrid*12;       % Number of subcarriers
L = carrier.SymbolsPerSlot;     % Number of OFDM symbols per slot
P = srs.NumSRSPorts;  % Number of antenna ports
gridSize = [K L P];

Initialize the carrier grid for one slot with all zeros.

slotGrid = complex(zeros(gridSize));

Map the SRS symbols to the carrier grid using the indices.

slotGrid(srsInd) = srsSym;

Input Arguments

collapse all

Carrier configuration parameters for a specific OFDM numerology, specified as an nrCarrierConfig object.

SRS configuration parameters, specified as an nrSRSConfig object.

Data type of the output symbols, specified as 'double' or 'single'.

Data Types: char | string

Output Arguments

collapse all

SRS symbols, returned as a complex column vector, complex matrix, or empty array. The number of transmission antenna ports specified by the NumSRSPorts property of the srs input determines the number of columns. The symbols in a column correspond to one antenna port.

The function returns an empty array when the slot number specified by carrier.NSlot is not a candidate slot, as defined in TS 38.211 Section, or when the srs.SRSPeriod property is set to 'off'.

Data Types: single | double

Information about the SRS generation, returned as a structure containing these fields:

SeqGroupBase sequence group number per OFDM symbol (parameter u in TS 38.211 Section
NSeqBase sequence number per OFDM symbol (parameter v in TS 38.211 Section

Reference signal cyclic shift per port (parameter ɑi in TS 38.211 Section

When you set the srs.CyclicShiftHopping property to true, Alpha is returned as an srs.NumSRSSymbols-by-srs.NumSRSPorts matrix. (since R2024a)

SeqLengthZadoff-Chu sequence length (parameter Msc,bRS in TS 38.211 Section


[1] 3GPP TS 38.211. “NR; Physical channels and modulation.” 3rd Generation Partnership Project; Technical Specification Group Radio Access Network.

Extended Capabilities

Version History

Introduced in R2020a

expand all