Main Content


Demodulate fields of HE waveform



sym = wlanHEDemodulate(rx,field,cfg) recovers a demodulated frequency-domain signal by orthogonal frequency-division multiplexing (OFDM) demodulating the received high-efficiency (HE) time-domain signal rx. The function demodulates rx using HE transmission parameters cfg and signal field value field.


sym = wlanHEDemodulate(rx,field,cfg,ruNumber) specifies the number of a resource unit. To demodulate either the HE-Data field or the HE long training field (HE-LTF), use this syntax.

sym = wlanHEDemodulate(rx,field,cbw,hegi,ru) specifies channel bandwidth cbw, guard interval hegi, and resource unit determined by the size and index specified in ru. If ru is not specified, the function returns the demodulated signal assuming a full band configuration. To demodulate the HE-Data field when the PHY format is unknown, use this syntax.

sym = wlanHEDemodulate(rx,field,cbw,hegi,ltfType,ru) specifies the HE-LTF type. If ru is not specified, wlanHEDemodulate returns the demodulated signal assuming a full band configuration. To demodulate the HE-LTF when the PHY format is unknown, use this syntax.


sym = wlanHEDemodulate(rx,field,cbw) recovers the frequency-domain signal for the specified field and channel bandwidth. To demodulate the L-LTF, L-SIG, RL-SIG, HE-SIG-A, or HE-SIG-B field when the PHY format configuration is unknown, use this syntax.

sym = wlanHEDemodulate(___,Name=Value) specifies additional options using one or more name-value arguments in combination with any of the previous syntaxes.


collapse all

Generate a WLAN waveform for an HE SU transmission.

cfg = wlanHESUConfig;
bits = [1;0;0;1];
waveform = wlanWaveformGenerator(bits,cfg);

Obtain the field indices and extract the HE-SIG-A field.

ind = wlanFieldIndices(cfg);
rx = waveform(ind.HESIGA(1):ind.HESIGA(2),:);

Perform OFDM demodulation on the HE-SIG-A field.

sym = wlanHEDemodulate(rx,'HE-SIG-A',cfg);

Get the OFDM information, then extract the data and pilot subcarriers.

info = wlanHEOFDMInfo('HE-SIG-A',cfg);
data = sym(info.DataIndices,:,:);
pilots =  sym(info.PilotIndices,:,:);

Create a WLAN HE MU configuration object, specifying the allocation index, HE-LTF type, and guard interval.

AllocationIndex = 16;
cfg = wlanHEMUConfig(16,HELTFType=2,GuardInterval=1.6);

Generate a waveform for the specified information bits and format configuration object.

bits = [1;0;0;1];
waveform = wlanWaveformGenerator(bits,cfg);

Generate field indices and extract the HE-LTF.

ind = wlanFieldIndices(cfg);
rx = waveform(ind.HELTF(1):ind.HELTF(2),:);

Demodulate the HE-LTF for each RU and display the size of the array containing the demodulated symbols in each case.

info = ruInfo(cfg);
allRUs = info.NumRUs;
for ruNumber = 1:allRUs
    sym = wlanHEDemodulate(rx,'HE-LTF',cfg,ruNumber);
    52     1

    52     1

   106     1

Retrieve the L-LTF from a very-high-throughput (VHT) waveform with a channel bandwidth of 80 MHz.

cbw = 'CBW80';
rx = wlanLLTF(wlanVHTConfig(ChannelBandwidth=cbw));

Get the frequency-domain signal by demodulating the L-LTF.

sym = wlanHEDemodulate(rx,'L-LTF',cbw);

Input Arguments

collapse all

Received time-domain signal, specified as a complex-valued matrix of size Ns-by-Nr.

  • Ns is the number of time-domain samples. If Ns is not an integer multiple of the OFDM symbol length, Ls, for the specified field, then the function ignores the remaining mod(Ns,Ls) symbols.

  • Nr is the number of receive antennas.

Data Types: single | double
Complex Number Support: Yes

Field to be demodulated, specified as one of these values:

  • 'L-LTF' — Demodulate the legacy long training field (L-LTF).

  • 'L-SIG' — Demodulate the legacy signal (L-SIG) field.

  • 'RL-SIG' — Demodulate the repeated legacy signal (RL-SIG) field.

  • 'HE-SIG-A' — Demodulate the HE signal A (HE-SIG-A) field.

  • 'HE-SIG-B' — Demodulate the HE signal B (HE-SIG-B) field.

  • 'HE-LTF' — Demodulate the HE long training field (HE-LTF).

  • 'HE-Data' — Demodulate the HE-Data field.

Data Types: char | string

Physical layer (PHY) format configuration, specified as an object of type wlanHESUConfig, wlanHEMUConfig, wlanHETBConfig, or wlanHERecoveryConfig.

When you specify this input as a wlanHETBConfig object with the FeedbackNDP property set to 1 (true), the function interleaves the symbols for active and complementary tone sets for the value of the RUToneSetIndex property in accordance with Table 27-32 of [1].

Number of the RU of interest, specified as a positive integer. The RU number specifies the location of the RU within the channel. For example, consider an 80-MHz transmission with two 242-tone RUs and one 484-tone RU, in order of absolute frequency. For this allocation:

  • RU number 1 corresponds to the 242-tone RU in the 20-MHz subchannel at the lowest absolute frequency (size 242, index 1).

  • RU number 2 corresponds to the 242-tone RU in the 20-MHz subchannel at the next lowest absolute frequency (size 242, index 2).

  • RU number 3 corresponds to the 484-tone RU in the 40-MHz subchannel at the highest absolute frequency (size 484, index 2).


The function ignores this input when you specify cfg as a wlanHERecoveryConfig object. Previously, this caused an error. (since R2024a)

Data Types: single | double

Channel bandwidth, specified as one of these values.

  • 'CBW20' — Channel bandwidth of 20 MHz

  • 'CBW40' — Channel bandwidth of 40 MHz

  • 'CBW80' — Channel bandwidth of 80 MHz

  • 'CBW160' — Channel bandwidth of 160 MHz

Data Types: char | string

Guard interval duration, in microseconds, specified as 0.8, 1.6, or 3.2.

Data Types: single | double

HE-LTF type, specified as 1, 2, or 4.

Data Types: single | double

RU size and index, specified as a 1-by-2 vector of positive scalars. Specify ru in the form [size,index], where size must be 26, 52, 106, 242, 484, 996, or 1992 in accordance with the specified channel bandwidth. For example, an 80-MHz transmission has four possible 242-tone RUs (one for each 20-MHz subchannel). RU number 242-1 (size = 242 and index = 1) is the lowest absolute frequency within the 80-MHz channel. RU number 242-4 is the highest absolute frequency.

Data Types: single | double

Name-Value Arguments

Specify optional pairs of arguments as Name1=Value1,...,NameN=ValueN, where Name is the argument name and Value is the corresponding value. Name-value arguments must appear after other arguments, but the order of the pairs does not matter.

Before R2021a, use commas to separate each name and value, and enclose Name in quotes.

Example: symOffset=0.5

OFDM symbol sampling offset, as a fraction of the cyclic prefix length, specified as a scalar in the interval [0, 1].

The value that you specify indicates the start location for OFDM demodulation relative to the beginning of the cyclic prefix.

Different values of OFDM symbol sampling offset

Example: 0.45

Data Types: single | double

Oversampling factor, specified as a scalar greater than or equal to 1. The oversampled cyclic prefix length must be an integer number of samples. For more information, see FFT-Based Oversampling.

Data Types: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Output Arguments

collapse all

Demodulated frequency-domain signal, returned as a complex-valued array of size Nsc-by-Nsym-by-Nr.

  • Nsc is the number of active occupied subcarriers in the demodulated field.

  • Nsym is the number of OFDM symbols.

  • Nr is the number of receive antennas.

Data Types: double
Complex Number Support: Yes


collapse all

FFT-Based Oversampling

An oversampled signal is a signal sampled at a frequency that is higher than the Nyquist rate. WLAN signals maximize occupied bandwidth by using small guardbands, which can pose problems for anti-imaging and anti-aliasing filters. Oversampling increases the guardband width relative to the total signal bandwidth, thereby increasing the number of samples in the signal.

This function performs oversampling by using a larger IFFT and zero pad when generating an OFDM waveform. This diagram shows the oversampling process for an OFDM waveform with NFFT subcarriers comprising Ng guardband subcarriers on either side of Nst occupied bandwidth subcarriers.

FFT-based oversampling


[1] IEEE® Std 802.11ax™-2021 (Amendment to IEEE Std 802.11™-2020). “Part 11: Wireless LAN Medium Access Control (MAC) and Physical Layer (PHY) Specifications. Amendment 1: Enhancements for High Efficiency WLAN.” IEEE Standard for Information Technology — Telecommunications and Information Exchange between Systems. Local and Metropolitan Area Networks — Specific Requirements.

Extended Capabilities

C/C++ Code Generation
Generate C and C++ code using MATLAB® Coder™.

Version History

Introduced in R2019a

expand all