Main Content


Sidelink SC-FDMA modulation


waveform = lteSLSCFDMAModulate(ue,grid) 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,info] = lteSLSCFDMAModulate(ue,grid) also returns a SC-FDMA information structure array.

[___] = lteSLSCFDMAModulate(ue,grid,windowing) specifies in 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.


collapse all

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;

hold on

n = cumsum([1 info.CyclicPrefixLengths + info.Nfft]);
n = [n(1:end-1); n(2:end)];
rmsplot = repmat(rms,[2 1]);

xlabel('time (s)')
title('Waveform vs. Time')
legend('Waveform magnitude','RMS per resource grid SC-FDMA symbol')

title('Resource Grid Magnitude')
xlabel('SC-FDMA symbol index'); 
ylabel('subcarrier index');

Input Arguments

collapse all

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

Cyclic prefix length, specified as 'Normal' or 'Extended'.

Data Types: char | string

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

Resource element grid, specified as an NSC-by-NSYM-by-NT numeric array. NSC must be a multiple of 12 REs per Resource Block, since number of resource blocks is NRB = NSC / 12. NSYM 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).  NT 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

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

If you specify windowing this value is returned in info.Windowing and any value provided in ue.Windowing is ignored.

Data Types: double

Output Arguments

collapse all

Sidelink SC-FDMA modulated waveform, returned as an NS-by-NT numeric matrix, where NS is the number of the time-domain samples and NT is the number of transmission antennas. NS = K × 30720 / 2048 × Nfft, where Nfft is the IFFT size and K is the number of subframes in the grid input.

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

Sampling rate of the time-domain sidelink waveform, in Hz, returned as a positive numeric scalar. SamplingRate = Nfft × (30.72e6 / 2048).

The number of FFT points, returned as a positive integer scalar. Nfft is a function of the number of resource blocks (NRB)














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

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

Cyclic prefix length in symbols for each sidelink SC-FDMA symbol in a subframe, returned as an NSYM-by-1 integer vector. NSYM 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

collapse all

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


[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:

Version History

Introduced in R2016b