OFDM demodulation


  • grid = lteOFDMDemodulate(enb,waveform)
  • grid = lteOFDMDemodulate(enb,waveform,cpfraction)



grid = lteOFDMDemodulate(enb,waveform) performs OFDM demodulation of the time-domain waveform, waveform, given the cell-wide settings structure, enb.

The demodulation performs one FFT operation per received OFDM symbol to recover the received subcarrier values. These values are then used to construct each column of the output resource array, grid. The FFT is positioned partway through the cyclic prefix to allow for a certain degree of channel delay spread while avoiding the overlap between adjacent OFDM symbols. The particular position of the FFT chosen here avoids the OFDM symbol overlapping used in lteOFDMModulate. Since the FFT is performed away from the original zero-phase point on the transmitted subcarriers, a phase correction is applied to each subcarrier after the FFT. Then, the received subcarriers are extracted from the FFT bins, skipping unused frequency bins at either end of the spectrum and the central DC frequency bin. These extracted subcarriers form the columns of the output grid.

The sampling rate of the time-domain waveform, waveform, must be the same as used in lteOFDMModulate for the specified number of resource blocks, NDLRB. waveform must also be time-aligned such that the first sample is the first sample of the cyclic prefix of the first OFDM symbol in a subframe. This alignment can be achieved by using lteDLFrameOffset.

grid = lteOFDMDemodulate(enb,waveform,cpfraction) allows specification of the position of the demodulation through the cyclic prefix.


collapse all

Perform OFDM Demodulation

Perform modulation and demodulation of Test Model 1.1 5MHz.

cfg = lteTestModel('1.1','5MHz');
txWaveform = lteTestModelTool(cfg);
rxGrid = lteOFDMDemodulate(cfg,txWaveform);

Input Arguments

collapse all

enb — Cell-wide settingsstructure

Cell-wide settings, specified as a structure. enb contains the following fields.

Parameter FieldRequired or OptionalValuesDescription

Scalar integer (6,...,110). Standard bandwidth values are 6, 15, 25, 50, 75, and 100. NDLRB also accepts the standardized bandwidths in string format from the set {'1.4MHz', '3MHz', '5MHz', '10MHz', '15MHz', '20MHz'}.

Number of downlink (DL) resource blocks (RBs)


'Normal' (default), 'Extended'

Cyclic prefix length

Data Types: struct

waveform — Time-domain waveformnumeric matrix

Time-domain waveform, specified as a numeric matrix of size T-by-P, where P is the number of antennas and T is the number of time-domain samples. T = K × 30720 / 2048 × Nfft, where Nfft is the IFFT size and K is the number of subframes in the input, grid. waveform must be time-aligned such that the first sample is the first sample of the cyclic prefix of the first OFDM symbol in a subframe.

Data Types: double
Complex Number Support: Yes

cpfraction — Demodulation position0.55 (default) | scalar value

Demodulation position, specified as a scalar from 0 through 1, with 0 representing the start of the cyclic prefix and 1 representing the end of the cyclic prefix. The default value, 0.55, allows for the default level of windowing in lteOFDMModulate

Data Types: double

Output Arguments

collapse all

grid — Resource elements3-D numeric array

Resource elements, returned as a 3-D numeric array. grid stores the resource elements for a number of subframes across all configured antenna ports. It is an M-by-N-by-P array, where M is the number of subcarriers, N is the number of OFDM symbols, and P is the number of antennas.

Data Types: double
Complex Number Support: Yes

Introduced in R2014a

Was this topic helpful?