Main Content


Recover HT-SIG information bits



recBits = wlanHTSIGRecover(rxSig,chEst,noiseVarEst,cbw) returns the recovered information bits from the HT-SIG1 field and performs a CRC check. Inputs include the channel estimate data chEst, noise variance estimate noiseVarEst, and channel bandwidth cbw.


recBits = wlanHTSIGRecover(rxSig,chEst,noiseVarEst,cbw,Name,Value) specifies algorithm parameters by using one or more name-value pair arguments.


[recBits,failCRC] = wlanHTSIGRecover(___) returns the result of the CRC check, failCRC, using any of the arguments from the previous syntaxes.


[recBits,failCRC,eqSym] = wlanHTSIGRecover(___) returns the equalized symbols, eqSym.

[recBits,failCRC,eqSym,cpe] = wlanHTSIGRecover(___) returns the common phase error, cpe.


collapse all

Create a wlanHTConfig object having a channel bandwidth of 40 MHz. Use the object to create an HT-SIG field.

cfg = wlanHTConfig('ChannelBandwidth','CBW40');
[txSig,txBits] = wlanHTSIG(cfg);

Because a perfect channel is assumed, specify the channel estimate as a column vector of ones and the noise variance estimate as zero.

chEst = ones(104,1);
noiseVarEst = 0;

Recover the HT-SIG information bits. Verify that the received information bits are identical to the transmitted bits.

rxBits = wlanHTSIGRecover(txSig,chEst,noiseVarEst,'CBW40');
numerr = biterr(txBits,rxBits)
numerr = 0

Configure an HT transmission with a channel bandwidth of 40 MHz by creating a wlanHTConfig object. Generate the corresponding HT-SIG field.

cfg = wlanHTConfig('ChannelBandwidth','CBW40');
[txSig,txBits] = wlanHTSIG(cfg);

Pass the transmitted HT-SIG waveform through an additive white Gaussian noise (AWGN) channel.

awgnChan = comm.AWGNChannel('NoiseMethod','Variance','Variance',0.1);
rxSig = awgnChan(txSig);

Recover the HT-SIG field assuming a perfect channel and a noise variance estimate of 0.1, specifying zero-force equalization. Verify that the received information has no bit errors.

recBits = wlanHTSIGRecover(rxSig,ones(104,1),0.1,'CBW40','EqualizationMethod','ZF');
ans = 0

Recover HT-SIG in a 2x2 MIMO channel with AWGN. Confirm that the CRC check passes.

Configure a 2x2 MIMO TGn channel.

chanBW = 'CBW20';
cfg = wlanHTConfig( ...
    'ChannelBandwidth',chanBW, ...
    'NumTransmitAntennas',2, ...

Generate L-LTF and HT-SIG waveforms.

txLLTF  = wlanLLTF(cfg);
txHTSIG = wlanHTSIG(cfg);

Set the sample rate to correspond to the channel bandwidth. Create a TGn 2x2 MIMO channel without large scale fading effects.

fsamp = 20e6;
tgnChan = wlanTGnChannel('SampleRate',fsamp, ...
    'LargeScaleFadingEffect','None', ...
    'NumTransmitAntennas',2, ...

Pass the L-LTF and HT-SIG waveforms through a TGn channel with white noise.

rxLLTF = awgn(tgnChan(txLLTF),20);
rxHTSIG = awgn(tgnChan(txHTSIG),20);

Demodulate the L-LTF signal. Generate a channel estimate by using the demodulated L-LTF.

demodLLTF = wlanLLTFDemodulate(rxLLTF,chanBW,1);
chanEst = wlanLLTFChannelEstimate(demodLLTF,chanBW);

Recover the information bits, the CRC failure status, and the equalized symbols from the received HT-SIG field.

[recHTSIGBits,failCRC,eqSym] = wlanHTSIGRecover(rxHTSIG, ...

Verify that HT-SIG passed a CRC check by examining the status of failCRC.

failCRC = logical

Because failCRC is 0, HT-SIG passed the CRC check.

Visualize the scatter plot of the equalized symbols, eqSym.


Input Arguments

collapse all

Received HT-SIG field, specified as an NS-by-NR matrix. NS is the number of samples and increases with channel bandwidth.

Channel BandwidthNS

NR is the number of receive antennas.

Data Types: double | single
Complex Number Support: Yes

Channel estimate, specified as an NST-by-1-by-NR array. NST is the number of occupied subcarriers and increases with channel bandwidth.

Channel BandwidthNST

NR is the number of receive antennas.

The channel estimate is based on the L-LTF.

Data Types: double | single

Noise variance estimate, specified as a nonnegative scalar.

Data Types: double | single

Channel bandwidth in MHz, specified as 'CBW20' or 'CBW40'.

Data Types: char | string

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: 'PilotPhaseTracking','None' disables pilot phase tracking.

OFDM symbol sampling offset represented as a fraction of the cyclic prefix (CP) length, specified as the name-value pair consisting of 'OFDMSymbolOffset' and a scalar in the interval [0, 1]. The value you specify indicates the start location for OFDM demodulation relative to the beginning of the CP. The value 0 represents the start of the CP, and the value 1 represents the end of the CP.

Different values of the OFDMSymbolOffset argument

Data Types: double

Equalization method, specified as one of these values.

  • 'MMSE' — The receiver uses a minimum mean-square error equalizer.

  • 'ZF' — The receiver uses a zero-forcing equalizer.

When the received signal has multiple receive antennas, the function exploits receiver diversity during equalization. When the number of transmitted space-time streams is one and you specify this argument as 'ZF', the function performs maximal-ratio combining.

Data Types: char | string

Pilot phase tracking, specified as the name-value pair consisting of 'PilotPhaseTracking' and one of these values.

  • 'PreEQ' — Enable pilot phase tracking, which the function performs before any equalization operation.

  • 'None' — Disable pilot phase tracking.

Data Types: char | string

Output Arguments

collapse all

Recovered HT-SIG information bits, returned as a 48-element column vector. The number of elements corresponds to the length of the HT-SIG field.

CRC failure status, returned as a logical scalar. If HT-SIG fails the CRC check, failCRC is true.

Equalized symbols, returned as a 48-by-2 matrix corresponding to 48 data subcarriers and 2 OFDM symbols.

Data Types: double | single

Common phase error in radians, returned as a 2-by-1 column vector.

Data Types: double | single

More About

collapse all


The high throughput signal (HT-SIG) field is located between the L-SIG field and HT-STF and is part of the HT-mixed format preamble. It is composed of two symbols, HT-SIG1 and HT-SIG2.

The HT-SIG field in the HT-mixed preamble

HT-SIG carries information used to decode the HT packet, including the MCS, packet length, FEC coding type, guard interval, number of extension spatial streams, and whether there is payload aggregation. The HT-SIG symbols are also used for auto-detection between HT-mixed format and legacy OFDM packets.

Packet structure of HT-SIG1 and HT-SIG2

For a detailed description of the HT-SIG field, see section of IEEE® Std 802.11™-2020.


The L-LTF is the second field in the 802.11 OFDM PLCP legacy preamble. The L-LTF is a component of EHT, HE, VHT, HT, and non-HT PPDUs.

The L-LTF, second in the legacy preamble

Channel estimation, fine frequency offset estimation, and fine symbol timing offset estimation rely on the L-LTF.

The L-LTF is composed of a cyclic prefix (CP) followed by two identical long training symbols (C1 and C2). The CP consists of the second half of the long training symbol.

The cyclic prefix followed by the two long training symbols in the L-LTF

The L-LTF duration varies with channel bandwidth.

Channel Bandwidth (MHz)Subcarrier Frequency Spacing ΔF (kHz)Fast Fourier Transform (FFT) Period (TFFT = 1 / ΔF)Cyclic Prefix or Training Symbol Guard Interval (GI2) Duration (TGI2 = TFFT / 2)L-LTF Duration (TLONG = TGI2 + 2 × TFFT)
20, 40, 80, 160, and 320312.53.2 μs1.6 μs8 μs
10156.256.4 μs3.2 μs16 μs
578.12512.8 μs6.4 μs32 μs


[1] IEEE Std 802.11™-2012 IEEE Standard for Information technology — Telecommunications and information exchange between systems — Local and metropolitan area networks — Specific requirements — Part 11: Wireless LAN Medium Access Control (MAC) and Physical Layer (PHY) Specifications.

Extended Capabilities

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

Version History

Introduced in R2015b

expand all

1 IEEE Std 802.11-2012 Adapted and reprinted with permission from IEEE. Copyright IEEE 2012. All rights reserved.