Main Content

wlanHEOFDMInfo

OFDM information for HE transmission

Description

info = wlanHEOFDMInfo(field,cfg) returns info, a structure containing orthogonal frequency-division multiplexing (OFDM) information for the input field in a high-efficiency (HE) transmission parameterized by configuration object cfg.

example

info = wlanHEOFDMInfo(field,cfg,ruNumber) returns OFDM information for the resource unit (RU) of interest determined by its number ruNumber, when you specify cfg as an HE multi-user (HE MU) configuration. To return OFDM information for either the HE-Data field or the HE long training field (HE-LTF) in an HE MU transmission, use this syntax.

example

info = wlanHEOFDMInfo(field,cbw,hegi,ru) returns OFDM information for channel bandwidth cbw, guard interval hegi, and RU of interest determined by its size and index specified in ru. If you do not specify ru, then wlanHEOFDMInfo returns information assuming a full band configuration. To return OFDM information for either the HE-Data field or the HE-LTF when the PHY format configuration is unknown, use this syntax.

info = wlanHEOFDMInfo(field,cbw) returns OFDM information for the specified field and channel bandwidth. To return OFDM information for one of the L-LTF, L-SIG, RL-SIG, HE-SIG-A, or HE-SIG-B fields when the PHY format configuration is unknown, use this syntax.

example

info = wlanHEOFDMInfo(___,OversamplingFactor=osf) returns OFDM information for the specified oversampling factor. For more information about oversampling, see FFT-Based Oversampling.

Examples

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,:,:);

Get OFDM information for each RU in an HE MU waveform.

Create a WLAN HE-MU-format configuration object with the allocation index set to 16.

AllocationIndex = 16;
cfg = wlanHEMUConfig(AllocationIndex);

Get the OFDM information pertaining to the HE-Data field for each RU and extract the number of active subcarriers in each case.

NumTones =  zeros(numel(cfg.RU),1);
for ruNumber = 1:numel(cfg.RU)
    info = wlanHEOFDMInfo('HE-Data',cfg,ruNumber);
    NumTones(ruNumber) = info.NumTones;
end

Display the number of active subcarriers for each RU.

disp(NumTones');
    52    52   106

Get OFDM information for the legacy long training field (L-LTF) for a specified channel bandwidth.

Specify a channel bandwidth of 40 MHz.

cbw = 'CBW40';

Get the OFDM information for the L-LTF and display the fast Fourier transform (FFT) length.

info = wlanHEOFDMInfo('L-LTF',cbw);
disp(info.FFTLength);
   128

Input Arguments

collapse all

Field for which to return OFDM information, specified as one of these values.

  • 'L-LTF' — Return OFDM information for the legacy long training field (L-LTF).

  • 'L-SIG' — Return OFDM information for the legacy signal (L-SIG) field.

  • 'RL-SIG' — Return OFDM information for the repeated legacy signal (RL-SIG) field.

  • 'HE-SIG-A' — Return OFDM information for the HE signal A (HE-SIG-A) field.

  • 'HE-SIG-B' — Return OFDM information for the HE signal B (HE-SIG-B) field.

  • 'HE-LTF' — Return OFDM information for the HE long training field (HE-LTF).

  • 'HE-Data' — Return OFDM information for 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).

Note

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

Data Types: 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: 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: 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.

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

Output Arguments

collapse all

OFDM information, returned as a structure containing these fields.

NameValuesDescriptionData Types
FFTLengthPositive integerLength of the fast Fourier transform (FFT)double
SampleRatePositive scalarSample rate of the waveformdouble
CPLengthPositive integer

Cyclic prefix length, in samples

double
NumTonesNonnegative integer

Number of active subcarriers

double
NumSubchannelsPositive integerNumber of 20 MHz subchannelsdouble
ActiveFrequencyIndicesColumn vector of integers in the interval [–FFTLength/2, (FFTLength/2 – 1)]Indices of active subcarriers. Each element of this field is the index of an active subcarrier, such that the direct current (DC) or null subcarrier is at the center of the frequency band.double
ActiveFFTIndicesColumn vector of integers in the interval [1, FFTLength]Indices of active subcarriers within the FFTdouble
DataIndicesColumn vector of integers in the interval [1, NumTones]Indices of data within the active subcarriersdouble
PilotIndicesColumn vector of integers in the interval [1, NumTones]Indices of pilots within the active subcarriersdouble

Data Types: struct

Algorithms

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, which increases 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 made up of Ng guardband subcarriers on either side of Nst occupied bandwidth subcarriers.

FFT-based oversampling

References

[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