Generate HT-Data field waveform



y = wlanHTData(psdu,cfg) generates the HT-Data field[1] time-domain waveform for the input PLCP service data unit, psdu, and specified configuration object, cfg. See HT-Data Field Processing for waveform generation details.

y = wlanHTData(psdu,cfg,scramInit) uses scramInit for the scrambler initialization state.


collapse all

Generate the waveform signal for a 40 MHz HT-mixed data field with multiple transmit antennas. Create an HT format configuration object. Specify 40 MHz channel bandwidth, two transmit antennas, and two space-time streams.

cfgHT = wlanHTConfig('ChannelBandwidth','CBW40','NumTransmitAntennas',2,'NumSpaceTimeStreams', 2,'MCS',12)
cfgHT = 
  wlanHTConfig with properties:

       ChannelBandwidth: 'CBW40'
    NumTransmitAntennas: 2
    NumSpaceTimeStreams: 2
         SpatialMapping: 'Direct'
                    MCS: 12
          GuardInterval: 'Long'
          ChannelCoding: 'BCC'
             PSDULength: 1024
         AggregatedMPDU: 0
     RecommendSmoothing: 1

Assign PSDULength bytes of random data to a bit stream and generate the HT data waveform.

PSDU =  randi([0 1],cfgHT.PSDULength*8,1);
y = wlanHTData(PSDU,cfgHT);

Determine the size of the waveform.

ans = 1×2

        2080           2

The function returns a complex two-column time-domain waveform. Each column contains 2080 samples, corresponding to the HT-Data field for each transmit antenna.

Input Arguments

collapse all

PLCP Service Data Unit (PSDU), specified as an Nb-by-1 vector. Nb is the number of bits and equals PSDULength × 8.

Data Types: double

Format configuration, specified as a wlanHTConfig object. The wlanHTData function uses the object properties indicated.

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

Data Types: char | string

Number of transmit antennas, specified as 1, 2, 3, or 4.

Data Types: double

Number of space-time streams in the transmission, specified as 1, 2, 3, or 4.

Data Types: double

Number of extension spatial streams in the transmission, specified as 0, 1, 2, or 3. When NumExtensionStreams is greater than 0, SpatialMapping must be 'Custom'.

Data Types: double

Spatial mapping scheme, specified as 'Direct', 'Hadamard', 'Fourier', or 'Custom'. The default value 'Direct' applies when NumTransmitAntennas and NumSpaceTimeStreams are equal.

Data Types: char | string

Spatial mapping matrix, specified as a scalar, matrix, or 3-D array. Use this property to rotate and scale the constellation mapper output vector. This property applies when the SpatialMapping property is set to 'Custom'. The spatial mapping matrix is used for beamforming and mixing space-time streams over the transmit antennas.

  • When specified as a scalar, NumTransmitAntennas = NumSpaceTimeStreams = 1 and a constant value applies to all the subcarriers.

  • When specified as a matrix, the size must be (NSTS + NESS)-by-NT. NSTS is the number of space-time streams. NESS is the number of extension spatial streams. NT is the number of transmit antennas. The spatial mapping matrix applies to all the subcarriers. The first NSTS and last NESS rows apply to the space-time streams and extension spatial streams respectively.

  • When specified as a 3-D array, the size must be NST-by-(NSTS + NESS)-by-NT. NST is the sum of the data and pilot subcarriers, as determined by ChannelBandwidth. NSTS is the number of space-time streams. NESS is the number of extension spatial streams. NT is the number of transmit antennas. In this case, each data and pilot subcarrier can have its own spatial mapping matrix.

    The table shows the ChannelBandwidth setting and the corresponding NST.


The calling function normalizes the spatial mapping matrix for each subcarrier.

Example: [0.5 0.3; 0.4 0.4; 0.5 0.8] represents a spatial mapping matrix having three space-time streams and two transmit antennas.

Data Types: double
Complex Number Support: Yes

Modulation and coding scheme to use for transmitting the current packet, specified as an integer from 0 to 31. The MCS setting identifies which modulation and coding rate combination is used, and the number of spatial streams (NSS).

MCS(Note 1)NSS(Note 1)ModulationCoding Rate

0, 8, 16, or 24

1, 2, 3, or 4


1, 9, 17, or 25

1, 2, 3, or 4


2, 10, 18, or 26

1, 2, 3, or 4


3, 11, 19, or 27

1, 2, 3, or 4


4, 12, 20, or 28

1, 2, 3, or 4


5, 13, 21, or 29

1, 2, 3, or 4


6, 14, 22, or 30

1, 2, 3, or 4


7, 15, 23, or 31

1, 2, 3, or 4

Note-1 MCS from 0 to 7 have one spatial stream. MCS from 8 to 15 have two spatial streams. MCS from 16 to 23 have three spatial streams. MCS from 24 to 31 have four spatial streams.

See IEEE® 802.11™-2012, Section 20.6 for further description of MCS dependent parameters.

When working with the HT-Data field, if the number of space-time streams is equal to the number of spatial streams, no space-time block coding (STBC) is used. See IEEE 802.11-2012, Section for further description of STBC mapping.

Example: 22 indicates an MCS with three spatial streams, 64-QAM modulation, and a 3/4 coding rate.

Data Types: double

Cyclic prefix length for the data field within a packet, specified as 'Long' or 'Short'.

  • The long guard interval length is 800 ns.

  • The short guard interval length is 400 ns.

Data Types: char | string

Type of forward error correction coding for the data field, specified as 'BCC' (default) or 'LDPC'. 'BCC' indicates binary convolutional coding and 'LDPC' indicates low density parity check coding. Providing a character vector or a single cell character vector defines the channel coding type for a single user or all users in a multiuser transmission. By providing a cell array different channel coding types can be specified per user for a multiuser transmission.

Data Types: char | cell | string

Number of bytes carried in the user payload, specified as an integer from 0 to 65,535. A PSDULength of 0 implies a sounding packet for which there are no data bits to recover.

Example: 512

Data Types: double

Scrambler initialization state for each packet generated, specified as an integer from 1 to 127 or as the corresponding binary vector of length seven. The default value of 93 is the example state given in IEEE Std 802.11-2012, Section L.1.5.2.

The scrambler initialization used on the transmission data follows the process described in IEEE Std 802.11-2012, Section and IEEE Std 802.11ad™-2012, Section 21.3.9. The header and data fields that follow the scrambler initialization field (including data padding bits) are scrambled by XORing each bit with a length-127 periodic sequence generated by the polynomial S(x) = x7+x4+1. The octets of the PSDU (Physical Layer Service Data Unit) are placed into a bit stream, and within each octet, bit 0 (LSB) is first and bit 7 (MSB) is last. The generation of the sequence and the XOR operation are shown in this figure:

Conversion from integer to bits uses left-MSB orientation. For the initialization of the scrambler with decimal 1, the bits are mapped to the elements shown.

Bit Value0000001

To generate the bit stream equivalent to a decimal, use de2bi. For example, for decimal 1:

ans =

     0     0     0     0     0     0     1

Example: [1; 0; 1; 1; 1; 0; 1] conveys the scrambler initialization state of 93 as a binary vector.

Data Types: double | int8

Output Arguments

collapse all

HT-Data field time-domain waveform for HT-mixed format, returned as an NS-by-NT matrix. NS is the number of time domain samples, and NT is the number of transmit antennas.

More About

collapse all

HT-Data field

The high throughput data field (HT-Data) follows the last HT-LTF of an HT-mixed packet.

The high throughput data field is used to transmit one or more frames from the MAC layer and consists of four subfields.

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

  • PSDU — Variable-length field containing the PLCP service data unit (PSDU). In 802.11, the PSDU can consist of an aggregate of several MAC service data units.

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

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


Physical layer convergence procedure (PLCP) service data unit (PSDU). This field is composed of a variable number of octets. The minimum is 0 (zero) and the maximum is 2500. For more information, see IEEE Std 802.11™-2012, Section


collapse all

HT-Data Field Processing

The HT-Data field follows the last HT-LTF in the packet structure.

The HT-Data field includes the user payload in the PSDU, plus 16 service bits, 6 × NES tail bits, and additional padding bits as required to fill out the last OFDM symbol.

For algorithm details, refer to IEEE Std 802.11™-2012 [1], Section 20.3.11. The wlanHTData function performs transmitter processing on the HT-Data field and outputs the time-domain waveform for NT transmit antennas.

NES is the number of BCC encoders.
NSS is the number of spatial streams.
NSTS is the number of space-time streams.
NT is the number of transmit antennas.

BCC channel coding is shown. STBC and spatial mapping are optional modes for HT format.


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