EngeeComms.OFDMDemodulatorBaseband
Demodulation using the OFDM method.
| Library |
|
| Block |
Description
System object EngeeComms.OFDMDemodulatorBaseband demodulates the input signal using the orthogonal frequency division of channels with multiplexing (OFDM) in the time domain and outputs subcarriers based on OFDM parameters.
For more information, see OFDM Modulator. The output is a broadband representation of the input signal for the system object. EngeeComms.OFDMModulatorBaseband.
To demodulate the OFDM signal, follow these steps:
-
Create an object
EngeeComms.OFDMDemodulatorBasebandand set its properties. -
Call the object with arguments as if it were a function. To learn more about how system objects work, see Engee System Objects.
Syntax
Creation
-
ofdmDemod = EngeeComms.OFDMDemodulatorBasband()— creates an OFDM demodulator that demodulates the input signal using the orthogonal frequency division demodulation method, with default property values.Example:
ofdmDemod = EngeeComms.OFDMDemodulatorBaseband() -
ofdmDemod = EngeeComms.OFDMDemodulatorBaseband(Name=Value)— creates an OFDM demodulator with the specified properties in the form of a pairName=Value, whereName— the name of the property, andValue— the appropriate value. You can specify multiple pairs «name-value» the order of the pairs does not matter. Unspecified properties retain their default values.Example:
ofdmDemod = EngeeComms.OFDMDemodulatorBaseband(FFTLength=64)
Using
-
Y = ofdmDemod(X)— demodulates the time domain input signal using the OFDM method and returns the demodulated OFDM baseband signal. -
[Y,pilot] = ofdmDemod(X)— divides the pilot signal into subcarriers specified in the value of the PilotCarrierIndices property. To use this syntax, set the PilotOutputPort property totrue.
Arguments
Input arguments
X — OFDM-Modulated broadband input signal
+
the matrix
Details
OFDM is a modulated broadband signal defined as a matrix
-
is the oversampling coefficient determined by the OversamplingFactor property.
-
-
— the length of the cyclic prefix for all characters.
-
— the length of the cyclic prefix, determined by the CyclicPrefixLength property.
-
If CyclicPrefixLength is a scalar, .
-
If CyclicPrefixLength is a vector of strings, .
-
-
— the number of subcarriers determined by the FFTLength parameter.
-
— the number of characters defined by the NumberOfOFDMSymbols parameter.
-
— the number of receiving antennas, determined by the parameter NumberOfReceiveAntennas.
| Типы данных |
|
| Support for complex numbers |
Yes |
Output arguments
Y — demodulated output signal
+
the matrix | 3D array
Details
Demodulated output signal returned as a matrix or array
on on the same type of data as the input signal. The output signal is reduced to a matrix if equally 1.
-
— the number of subcarriers of data.
-
— the number of characters defined by the NumSymbols. property.
-
— the number of receiving antennas, determined by the numreceiveantennas property.
| Типы данных |
|
| Support for complex numbers |
Yes |
pilot — pilot signal
+
3D array | 4D array
Details
A pilot signal returned with the same data type as the input signal. Set as:
-
3D array size on on when the PilotCarrierIndices property is a vector or a matrix.
-
4D array size on on on when the PilotCarrierIndices property is a three-dimensional array.
where:
* — the number of pilot subcarriers in each symbol, determined by size(PilotCarrierIndices,1).
* — the number of characters defined by the NumSymbols property.
* — the number of receiving antennas, determined by the numreceiveantennas property.
* – the number of transmitting antennas.
Dependencies
To use this argument, set the PilotOutputPort property to true.
Features
FFTLength — number of FFT points
+
64 (default) | a positive integer
Details
The number of fast Fourier transform (FFT) points, specified as a positive integer scalar. The length of the FFT should be and is equivalent to the number of subcarriers.
NumGuardBandCarriers — the number of subcarriers allocated to the left and right guard bands
+
[6; 5] (default) | a 2-by-1 integer vector
Details
The number of subcarriers allocated for the left and right protective strips, set as an integer vector of 2 by 1.
The number of subcarriers of the left and right protective strips, , must be within , where — the total number of subcarriers in the OFDM signal, determined by the FFTLength property.
RemoveDCCarrier — exclude or enable a zero-frequency subcarrier
+
false or 0 (default) | true or 1
Details
Option to remove the zero DC subcarrier, set as numeric or logical 0 (false) or 1 (true). The zero-frequency subcarrier is located in the center of the frequency band and has an index value:
-
If the value is even number.
-
If the value is the odd one.
— this is the total number of subcarriers in the OFDM signal, determined by the FFTLength property.
PilotOutputPort — output of pilot subcarriers
+
false or 0 (default) | true or 1
Details
Pilot subcarrier output option, set as numeric or logical 0 (false) or 1 (true).
-
0(false) — pilot information may be present, but remains embedded in the output. -
1(true) — the block separates subcarriers specified by the PilotSubcarrierIndices property from the output data and outputs a demodulated pilot signal in the pilot argument.
PilotCarrierIndices — location indexes of pilot subcarriers
+
[12; 26; 40; 54] ( by default) | column vector | the matrix | 3D array
Details
The location indexes of the pilot subcarriers, set as a column vector, matrix, or 3D array with integer values of elements in the range
,
where
-
— the total number of subcarriers in the OFDM signal, determined by the FFTLength property.
-
and — the left and right protective bands specified by the value of the NumberOfGuardBands property.
Pilot carrier indexes you can assign the same or different subcarriers for each symbol and for all transmitting antennas .
-
If the pilot indexes are the same for each symbol and the transmitting antenna, the parameter has the dimension on 1.
-
If the pilot indexes differ in characters, the parameter has the dimension on .
-
If the received signal is assigned a single symbol on several transmitting antennas, then the parameter has the dimension on 1 on .
-
If the indexes differ in the number of characters and transmitting antennas, the parameter has the dimension on on .
| To minimize interference between transmissions to more than one transmitting antenna, the pilot indexes per symbol must be mutually different for all antennas. |
Dependencies
To use this property, set the PilotOutputPort property to 1.
CyclicPrefixLength — length of the cyclic prefix
+
16 (default) | a positive integer | vector string
Details
The length of the cyclic prefix for each OFDM character is set as a positive integer scalar or a string vector containing the number of OFDM character elements. When specifying the length of the cyclic prefix as:
-
Scalar— the length of the cyclic prefix is the same for all symbols across all antennas. -
Vector string— the length of the cyclic prefix may vary between characters, but it does not vary between antennas.
OversamplingFactor — oversampling coefficient
+
1 (default) | a positive integer
Details
The oversampling coefficient, set as a positive scalar. The oversampling coefficient must satisfy these constraints.:
-
The product of OversamplingFactor by FFTLength must be an integer.
-
The product of OversamplingFactor by CyclicPrefixLength must be an integer.
If OversamplingFactor is set as an irrational number, specify a fractional value. For example, with FFTLength 12 and OversamplingFactor 4/3 their product is equal to an integer 16. However, the rounding 4/3 before 1,333 when installing OversamplingFactor, it results in a non-integer product 15,9960, which leads to an error.
|
| Типы данных |
|
NumSymbols — number of OFDM characters
+
1 (default) | a positive integer
Details
The number of OFDM symbols in the time-frequency grid, specified as a positive integer scalar.
Numreceiveantennas — number of receiving antennas
+
1 (default) | a positive integer
Details
The number of receiving antennas for receiving the OFDM-modulated signal is set as a positive integer scalar less than or equal to 64.
Additional Info
Algorithms
OFDM demodulation
The orthogonal frequency division multiplexing (OFDM) method demodulates the OFDM input signal using the FFT operation, resulting in N parallel data streams.
The figure shows an OFDM demodulator consisting of a bank of N correlators with one correlator assigned to each OFDM subcarrier. A bank of correlators is followed by a parallel-sequential transformation.

Subcarrier distribution, guard bands and guard intervals
Individual OFDM subcarriers are allocated as subcarriers of data, pilot or null.
As shown here, subcarriers are designated as subcarriers of data, DC, pilot, or protective band.

-
Subcarriers of data transmit user data.
-
The pilot subcarriers are designed to evaluate the channel.
-
Zero-frequency subcarriers do not transmit any data. Subcarriers without data provide zero frequency to the central subcarrier and serve as buffers between OFDM resource blocks.
-
The subcarrier of the zero frequency is the center of the frequency band with the index
If the value is even number.
If the value is the odd one.
— this is the total number of subcarriers in the OFDM signal.
-
The protection bands serve as a buffer between adjacent signals in adjacent frequency bands to reduce interference caused by spectral leakage.
-
Zero-frequency subcarriers allow you to simulate protective bands and the location of zero subcarriers for specific standards, such as various 802.11, LTE, WiMAX formats, or for custom distributions. The location of the zero subcarriers can be determined by assigning a vector of zero subcarrier indexes.
Similar to guard bands, guard intervals protect the integrity of transmitted signals in OFDM by reducing inter-character interference.
The purpose of protective intervals is similar to the purpose of protective strips. You can simulate guard intervals to ensure time separation between OFDM symbols. Guard intervals help to maintain inter-character orthogonality after the signal passes through channels with time variance. Guard intervals are created using cyclic prefixes. Inserting a cyclic prefix copies the last OFDM as the first part of the OFDM symbol.

OFDM benefits from using cyclic prefix insertion as long as the time variance does not exceed the duration of the cyclic prefix.
Inserting a cyclic prefix results in a fractional decrease in user data throughput, since the cyclic prefix takes up bandwidth that could have been used for data transmission.
Literature
-
Dahlman, E., S. Parkvall, and J. Skold. "4G LTE/LTE-Advanced for Mobile Broadband." London: Elsevier Ltd., 2011.
-
Andrews, J. G., A. Ghosh, and R. Muhamed. "Fundamentals of WiMAX. Upper Saddle River," NJ: Prentice Hall, 2007.
-
IEEE Standard 802.16-2017. "Part 16: Air Interface for Broadband Wireless Access Systems." March 2018.