Recover HT-SIG information bits



recBits = wlanHTSIGRecover(rxSig,chEst,noiseVarEst,cbw) returns the recovered information bits from the HT-SIG[1] 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,cfgRec) specifies algorithm parameters using wlanRecoveryConfig object cfgRec.


[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

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

Pass the transmitted HT-SIG through an AWGN channel.

awgnChan = comm.AWGNChannel('NoiseMethod','Variance', ...

rxSig = awgnChan(txSig);

Use a zero-forcing equalizer by creating a wlanRecoveryConfig object with its EqualizationMethod property set to 'ZF'.

cfgRec = wlanRecoveryConfig('EqualizationMethod','ZF');

Recover the HT-SIG field. Verify that the received information has no bit errors.

rxBits = wlanHTSIGRecover(rxSig,ones(104,1),0.1,'CBW40',cfgRec);
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
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.

Noise variance estimate, specified as a nonnegative scalar.

Data Types: double

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

Data Types: char | string

Algorithm parameters, specified as a wlanRecoveryConfig object. The function uses these properties.


If cfgRec is not provided, the function uses the default values of the wlanRecoveryConfig object.

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

Data Types: double

Equalization method, specified as one of these values:

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

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

Data Types: char | string

Pilot phase tracking, specified as one of these values:

  • 'PreEQ' — Enable pilot phase tracking, which is performed 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.

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

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.

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.

Refer to IEEE® Std 802.11™-2012, Section for a detailed description of the HT-SIG field.


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

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 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, and 160312.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™.

Introduced in R2015b

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