# lteSLSCFDMAModulate

Sidelink SC-FDMA modulation

## Syntax

## Description

returns
a modulated sidelink SC-FDMA waveform for the specified UE settings
structure and allocated resource element grid of a number of subframes
across one or more antenna planes. For more information, see Sidelink SC-FDMA Modulation.`waveform`

= lteSLSCFDMAModulate(`ue`

,`grid`

)

`[___] = lteSLSCFDMAModulate(`

specifies
in `ue`

,`grid`

,`windowing`

)`windowing`

the number of windowed and overlapped
samples to use in the time-domain windowing. For this syntax, the
value reported in `info`

.`Windowing`

equals `windowing`

.
Any value provided in `ue`

.`Windowing`

is
ignored.

This syntax supports output options from prior syntaxes.

## Examples

### Sidelink Broadcast Channel Modulation

Perform sidelink SC-FDMA modulation of one subframe containing a sidelink broadcast transmission. Any resource elements present in the last SC-FDMA symbol of the subframe are not modulated, so the resulting waveform magnitude is zero during that SC-FDMA symbol. Plot the magnitude of the resulting time-domain waveform and the transmitted resource grid magnitude.

**Create a UE settings structure and an empty resource grid**

ue.NSLRB = 6; ue.CyclicPrefixSL = 'Extended'; ue.InCoverage = 1; ue.DuplexMode = 'FDD'; ue.NFrame = 0; ue.NSubframe = 0; ue.NSLID = 42; grid = lteSLResourceGrid(ue);

**Transmit the PSBCH**

Populate the PSBCH resource grid with an encoded SL-MIB message, and its DM-RS. Perform sidelink SC-FDMA modulation.

grid(ltePSBCHIndices(ue)) = ltePSBCH(ue,lteSLBCH(ue,lteSLMIB(ue))); grid(ltePSBCHDRSIndices(ue)) = ltePSBCHDRS(ue); [waveform,info] = lteSLSCFDMAModulate(ue,grid);

Calculate the expected RMS for each SC-FDMA symbol from the resource grid prior to modulation.

rms = sqrt(sum(abs((grid./double(info.Nfft)).^2)));

Plot the waveform magnitude overlaying the RMS for each SC-FDMA symbol. Plot the transmitted resource grid magnitude.

t = (0:size(waveform,1))/info.SamplingRate; figure subplot(2,1,1) hold on plot(t(1:end-1),abs(waveform),'r'); n = cumsum([1 info.CyclicPrefixLengths + info.Nfft]); n = [n(1:end-1); n(2:end)]; rmsplot = repmat(rms,[2 1]); plot(t(n(:)),rmsplot(:),'b') xlabel('time (s)') ylabel('magnitude') title('Waveform vs. Time') legend('Waveform magnitude','RMS per resource grid SC-FDMA symbol') subplot(2,1,2) imagesc(abs(grid)) title('Resource Grid Magnitude') xlabel('SC-FDMA symbol index'); ylabel('subcarrier index');

## Input Arguments

`ue`

— User equipment settings

structure

User equipment settings, specified as a parameter structure containing these fields:

`CyclicPrefixSL`

— Cyclic prefix length

`'Normal'`

(default) | `'Extended'`

| optional

Cyclic prefix length, specified as `'Normal'`

or `'Extended'`

.

**Data Types: **`char`

| `string`

`Windowing`

— Number of time-domain samples

positive integer scalar | optional

Number of time-domain samples over which the function applies windowing and overlapping of sidelink SC-FDMA symbols, specified as a positive integer scalar.

`ue`

.`Windowing`

must be
even. For the
`ue`

.`Windowing`

field, the default depends on *NRB* and
`CyclicPrefixSL`

.

**Data Types: **`double`

**Data Types: **`struct`

`grid`

— Resource element grid

numeric 3-D array

Resource element grid, specified as an
*N*_{SC}-by-*N*_{SYM}-by-*N*_{T}
numeric array. *N*_{SC} must be a
multiple of 12 REs per Resource Block, since number of resource blocks is
*NRB* = *N*_{SC} / 12.
*N*_{SYM} must be a multiple
of the number of SC-FDMA symbols in a subframe (14 for normal cyclic prefix
and 12 for extended cyclic prefix).
*N*_{T} is the number of
antenna ports. `grid`

defines the RE allocation across
one or more subframes. Multiple subframes are defined by concatenation
across the columns (second dimension).

Each antenna plane in `grid`

is SC-FDMA modulated,
resulting in the columns of `waveform`

, as described
in Represent Resource Grids.

**Data Types: **`double`

**Complex Number Support: **Yes

`windowing`

— Number of time-domain samples

positive integer scalar | optional

## Output Arguments

`waveform`

— Sidelink SC-FDMA modulated waveform

numeric matrix

`info`

— Sidelink SC-FDMA modulated waveform information

structure

Sidelink SC-FDMA modulated waveform information, returned as a parameter structure containing these fields:

`SamplingRate`

— Sampling rate

positive numeric scalar

Sampling rate of the time-domain sidelink waveform, in Hz,
returned as a positive numeric scalar.
`SamplingRate`

=
`Nfft`

× (30.72e6 / 2048).

`Nfft`

— Number of FFT points

positive integer scalar

The number of FFT points, returned as a positive integer
scalar. `Nfft`

is a function of the number of
resource blocks (*NRB*)

NRB | `Nfft` |
---|---|

6 | 128 |

15 | 256 |

25 | 512 |

50 | 1024 |

75 | 2048 |

100 | 2048 |

In general, `Nfft`

is the
smallest power of 2 greater than or equal to
(12 × *NRB*) / 0.85.
Specifically, `Nfft`

is the smallest FFT that
spans all subcarriers and results in no more than 85% of
bandwidth occupancy
(12 × *NRB* / `Nfft`

).

`Windowing`

— Number of time-domain samples

positive integer scalar

Number of time-domain samples over which windowing and overlapping of sidelink SC-FDMA symbols is applied, returned as a positive integer scalar.

`CyclicPrefixLengths`

— Cyclic prefix length

positive integer vector

Cyclic prefix length in symbols for each sidelink SC-FDMA
symbol in a subframe, returned as an
*N*_{SYM}-by-1 integer
vector. *N*_{SYM} is 14 for
normal cyclic prefix and 12 for extended cyclic prefix.

The vector returned for
`info`

.`CyclicPrefixLengths`

depends on the FFT size.

When

`info`

.`Nfft`

=`2048`

, then`CyclicPrefixLengths`

is:`[160 144 144 144 144 144 144 160 144 144 144 144 144 144]`

for normal cyclic prefix`[512 512 512 512 512 512 512 512 512 512 512 512]`

for extended cyclic prefix

For other values of

`info`

.`Nfft`

, these element values in`CyclicPrefixLengths`

are scaled by`info`

.`Nfft`

/ 2048.

## More About

### Sidelink SC-FDMA Modulation

The sidelink SC-FDMA modulation processing
in `lteSLSCFDMAModulate`

performs
IFFT calculation, half-subcarrier shifting, cyclic prefix insertions,
and optional raised-cosine windowing and overlapping of adjacent sidelink
SC-FDMA symbols. TS 36.211 specifies that for PSSCH (Section 9.3.6),
PSCCH (9.4.6), PSDCH (9.5.6) and PSBCH (9.6.6), resource elements
in the last SC-FDMA symbol within a subframe should be counted in
the mapping process but not transmitted. Therefore, before performing
the IFFT, the last SC-FDMA symbol of each subframe in the input resource
grid is set to zero.

For sidelink SC-FDMA modulation, calling `lteSLSCFDMAModulate`

on
a multi-subframe array of resource grids is recommended.

When the resource element grid input to

`lteSLSCFDMAModulate`

spans multiple subframes, the windowing and overlapping is applied between all adjacent SC-FDMA symbols, including the last symbol of the previous subframe and the first symbol of the next subframe. Multi-subframe modulation processing results in a waveform that does not have discontinuities between subframes.A time-domain waveform that concatenates individually modulated subframes has discontinuities at the start and end of each subframe. To avoid these discontinuities, the resulting multi-subframe time-domain waveform must be created by manually overlapping symbols at the subframe boundaries.

If the value for windowing is zero, issues concerning concatenation of subframes before sidelink SC-FDMA modulation do not apply.

If `ue`

.`Windowing`

is absent,
`info`

.`Windowing`

returns a default value chosen
as a function of *NRB*. The chosen value is a compromise between:

The effective duration of cyclic prefix, and therefore the channel delay spread tolerance

The spectral characteristics of the transmitted signal, not considering any additional FIR filtering

## References

[1] 3GPP TS 36.211. “Evolved Universal Terrestrial Radio Access (E-UTRA); Physical
Channels and Modulation.” *3rd Generation Partnership Project;
Technical Specification Group Radio Access Network*. URL: https://www.3gpp.org.

## Version History

**Introduced in R2016b**

## Open Example

You have a modified version of this example. Do you want to open this example with your edits?

## 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)