This is machine translation

Translated by Microsoft
Mouseover text to see original. Click the button below to return to the English version of the page.

Note: This page has been translated by MathWorks. Click here to see
To view all translated materials including this page, select Country from the country navigator on the bottom of this page.


Recover non-HT data


recData = wlanNonHTDataRecover(rxSig,chEst,noiseVarEst,cfg)
recData = wlanNonHTDataRecover(rxSig,chEst,noiseVarEst,cfg,cfgRec)
[recData,eqSym] = wlanNonHTDataRecover(___)
[recData,eqSym,cpe] = wlanNonHTDataRecover(___)



recData = wlanNonHTDataRecover(rxSig,chEst,noiseVarEst,cfg) returns the recovered Non-HT-Data field[1] bits, given received signal rxSig, channel estimate data chEst, noise variance estimate noiseVarEst, and wlanNonHTConfig object cfg.


This function only supports data recovery for OFDM modulation.


recData = wlanNonHTDataRecover(rxSig,chEst,noiseVarEst,cfg,cfgRec) specifies the recovery algorithm parameters using wlanRecoveryConfig object cfgRec.

[recData,eqSym] = wlanNonHTDataRecover(___) returns the equalized symbols, eqSym, using the arguments from the previous syntaxes.

[recData,eqSym,cpe] = wlanNonHTDataRecover(___) also returns the common phase error, cpe.


collapse all

Create a non-HT configuration object having a PSDU length of 2048 bytes. Generate the corresponding data sequence.

cfg = wlanNonHTConfig('PSDULength',2048);
txBits = randi([0 1],8*cfg.PSDULength,1);
txSig = wlanNonHTData(txBits,cfg);

Pass the signal through an AWGN channel with a signal-to-noise ratio of 15 dB.

rxSig = awgn(txSig,15);

Recover the data and determine the number of bit errors.

rxBits = wlanNonHTDataRecover(rxSig,ones(52,1),0.05,cfg);
[numerr,ber] = biterr(rxBits,txBits)
numerr = 0
ber = 0

Create a non-HT configuration object having a 1024-byte PSDU length. Generate the corresponding non-HT data sequence.

cfg = wlanNonHTConfig('PSDULength',1024);
txBits = randi([0 1],8*cfg.PSDULength,1);
txSig = wlanNonHTData(txBits,cfg);

Pass the signal through an AWGN channel with a signal-to-noise ratio of 10 dB.

rxSig = awgn(txSig,10);

Create a data recovery object that specifies the use of the zero-forcing algorithm.

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

Recover the data and determine the number of bit errors.

rxBits = wlanNonHTDataRecover(rxSig,ones(52,1),0.1,cfg,cfgRec);
[numerr,ber] = biterr(rxBits,txBits)
numerr = 0
ber = 0

Configure a non-HT data object.

cfg = wlanNonHTConfig;

Generate and transmit a non-HT PSDU.

txPSDU = randi([0 1],8*cfg.PSDULength,1);
txSig = wlanNonHTData(txPSDU,cfg);

Generate an L-LTF for channel estimation.

txLLTF = wlanLLTF(cfg);

Create an 802.11g channel with a 3 Hz maximum Doppler shift and a 100 ns RMS path delay. Disable the reset before filtering option so that the L-LTF and data fields use the same channel realization.

ch802 = comm.RayleighChannel('SampleRate',20e6,'MaximumDopplerShift',3,'PathDelays',100e-9);

Pass the L-LTF and data signals through an 802.11g channel with AWGN.

rxLLTF = awgn(ch802(txLLTF),10);
rxSig = awgn(ch802(txSig),10);

Demodulate the L-LTF and use it to estimate the fading channel.

dLLTF = wlanLLTFDemodulate(rxLLTF,cfg);
chEst = wlanLLTFChannelEstimate(dLLTF,cfg);

Recover the non-HT data using the L-LTF channel estimate and determine the number of bit errors in the transmitted packet.

rxPSDU = wlanNonHTDataRecover(rxSig,chEst,0.1,cfg);

[numErr,ber] = biterr(txPSDU,rxPSDU)
numErr = 0
ber = 0

Input Arguments

collapse all

Received non-HT data signal, specified as a matrix of size NS-by-NR. NS is the number of samples and NR is the number of receive antennas. NS can be greater than the length of the data field signal.

Data Types: double
Complex Number Support: Yes

Channel estimate data, specified as an NST-by-1-by-NR array. NST is the number of occupied subcarriers, and NR is the number of receive antennas.

Data Types: double
Complex Number Support: Yes

Estimate of the noise variance, specified as a nonnegative scalar.

Example: 0.7071

Data Types: double

Non-HT format configuration, specified as a wlanNonHTConfig object. The wlanHTDataRecover function uses the following wlanNonHTConfig object properties:

OFDM modulation and coding scheme to use for transmitting the current packet, specified as an integer from 0 to 7. The system configuration associated with an MCS setting maps to the specified data rate.

MCSModulationCoding RateCoded bits per subcarrier (NBPSC)Coded bits per OFDM symbol (NCBPS)Data bits per OFDM symbol (NDBPS)Data Rate (Mbps)
20 MHz channel bandwidth10 MHz channel bandwidth5 MHz channel bandwidth

See IEEE Std 802.11™-2012, Table 18-4.

Data Types: double

Number of bytes carried in the user payload, specified as an integer from 1 to 4095.

Data Types: double

Algorithm parameters, specified as a wlanRecoveryConfig object. The object properties include:

OFDM symbol sampling offset represented as a fraction of the cyclic prefix (CP) length, specified as a scalar value from 0 to 1. This value indicates the start location for OFDM demodulation, relative to the beginning of the cyclic prefix. OFDMSymbolOffset = 0 represents the start of the cyclic prefix and OFDMSymbolOffset = 1 represents the end of the cyclic prefix.

Data Types: double

Equalization method, specified as 'MMSE' or 'ZF'.

  • 'MMSE' indicates that the receiver uses a minimum mean square error equalizer.

  • 'ZF' indicates that the receiver uses a zero-forcing equalizer.

Example: 'ZF'

Data Types: char | string

Pilot phase tracking, specified as 'PreEQ' or 'None'.

  • 'PreEQ' — Enables pilot phase tracking, which is performed before any equalization operation.

  • 'None' — Pilot phase tracking does not occur.

Data Types: char | string

Output Arguments

collapse all

Recovered binary output data, returned as a column vector of length 8×NPSDU, where NPSDU is the length of the PSDU in bytes. See wlanNonHTConfig Properties for PSDULength details.

Data Types: int8

Equalized symbols, returned as an NSD-by-NSYM matrix. NSD is the number of data subcarriers, and NSYM is the number of OFDM symbols in the non-HT data field.

Data Types: double
Complex Number Support: Yes

Common phase error in radians, returned as a column vector having length NSYM. NSYM is the number of OFDM symbols in the Non-HT-Data field.

More About

collapse all

Non-HT-Data field

The non-high throughput data (non-HT data) field is used to transmit MAC frames and is composed of a service field, a PSDU, tail bits, and pad bits.

  • Service field — Contains 16 zeros to initialize the data scrambler.

  • PSDU — Variable-length field containing the PLCP service data unit (PSDU).

  • Tail — Tail bits required to terminate a convolutional code. The field uses six zeros for the single encoding stream.

  • Pad Bits — Variable-length field required to ensure that the non-HT data field contains an integer number of symbols.


[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.