# nrSRS

## Syntax

``[sym,info] = nrSRS(carrier,srs)``
``[sym,info] = nrSRS(carrier,srs,'OutputDataType',datatype)``

## Description

example

````[sym,info] = nrSRS(carrier,srs)` returns uplink sounding reference signal (SRS) symbols, as defined in TS 38.211 section 6.4.1.4.2 [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.```

## Examples

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.

`size(sym)`
```ans = 1×2 480 2 ```

Verify the number of SRS symbols per port.

`isequal(info.SeqLength*srs.NumSRSSymbols,size(sym,1))`
```ans = logical 1 ```

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 6.4.1.4.4, 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:

FieldsDescription
`SeqGroup`Base sequence group number per OFDM symbol (parameter u in TS 38.211 Section 6.4.1.4.2)
`NSeq`Base sequence number per OFDM symbol (parameter v in TS 38.211 Section 6.4.1.4.2)
`Alpha`Reference signal cyclic shift per port (parameter ɑi in TS 38.211 Section 6.4.1.4.2)
`SeqLength`Zadoff-Chu sequence length (parameter ${M}_{sc,b}^{RS}$ in TS 38.211 Section 6.4.1.4.2)

## References

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

## Extended Capabilities

### Topics

Introduced in R2020a