Main Content

wlanHEDataNoiseEstimate

Noise estimation using HE-Data field

Since R2023b

Description

nest = wlanHEDataNoiseEstimate(X,chanEstSSPilots,cfgHE) estimates the variance of additive white Gaussian noise in a high-efficiency (HE) transmission configured by cfgHE. For the estimate, the function uses the demodulated pilot symbols in the HE-Data field, X, and the single-stream channel estimates at pilot subcarriers, chanEstSSPilots. The noise estimate is averaged over the number of OFDM symbols and receive antennas.

example

nest = wlanHEDataNoiseEstimate(X,chanEstSSPilots,cfgMU,ruNumber) specifies the number of a resource unit (RU). To estimate noise for an HE multi-user (HE MU) packet, use this syntax.

example

Examples

collapse all

Create a configuration object for an HE SU packet with a channel bandwidth of 160 MHz. Set an initial signal-to-noise ratio of 10 dB.

cfgHE = wlanHESUConfig;
cfgHE.ChannelBandwidth = "CBW160";
snr = 10;

Extract the OFDM information of the HE-Data field in the configuration. Change the signal-to-noise ratio to remove the noise contribution from the null subcarriers.

ofdmInfo = wlanHEOFDMInfo("HE-Data",cfgHE);
snrValue = snr-10*log10(ofdmInfo.FFTLength/ofdmInfo.NumTones);

Extract the field indices that correspond to the HE-LTF and the HE-Data field.

indHELTF = wlanFieldIndices(cfgHE,"HE-LTF");
indData = wlanFieldIndices(cfgHE,"HE-Data");

Use the getPSDULength object function to get the PSDU length of the configuration in bytes. Multiply by eight to convert the unit of length to bits.

cfgLength = getPSDULength(cfgHE)*8;

Generate a random sequence of bits to transmit. The number of bits is equal to the PSDU length.

txBits = randi([0 1],cfgLength,1);

Generate a time-domain waveform for the configuration and bits. Pass the waveform through an AWGN channel.

tx = wlanWaveformGenerator(txBits,cfgHE);
rx = awgn(tx,snrValue);

Extract the indices of the received waveform that correspond to the HE-LTF. Demodulate the HE-LTF and perform channel estimation at the single-stream pilots.

rxHELTF = rx(indHELTF(1):indHELTF(2),:);
heltfDemod = wlanHEDemodulate(rxHELTF,"HE-LTF",cfgHE);
[~,chanEstSSPilots] = wlanHELTFChannelEstimate(heltfDemod,cfgHE);

Extract the indices of the received waveform that correspond to the HE-Data field. Demodulate the HE-Data field and extract the demodulated symbols that correspond to the pilot subcarriers.

rxData = rx(indData(1):indData(2),:);
demodSym = wlanHEDemodulate(rxData,"HE-Data",cfgHE);
X = demodSym(ofdmInfo.PilotIndices,:,:);

Estimate the noise power of X from the channel estimate at the pilot symbols.

nest = wlanHEDataNoiseEstimate(X,chanEstSSPilots,cfgHE);

Extract the demodulated symbols that correspond to the data subcarriers. Recover the received bits from the demodulated data field and verify that they match the transmitted bits.

dataDemod = demodSym(ofdmInfo.DataIndices,:,:);
rxBits = wlanHEDataBitRecover(dataDemod,nest,cfgHE);
disp(isequal(txBits,rxBits))
   1

Create a configuration object for an HE MU packet. Set the allocation index to 96. This setting specifies a configuration with two users and a 20 MHz channel bandwidth. The two users each have a 106-tone RU.

cfgMU = wlanHEMUConfig(96);

Set an initial signal-to-noise ratio of 30 dB.

snr = 30;

Extract the OFDM information that corresponds to the first resource unit and the HE-Data field. Change the signal-to-noise ratio to remove the noise contribution from the null subcarriers.

ruNumber = 1;
ofdmInfo = wlanHEOFDMInfo("HE-Data",cfgMU,ruNumber);
snrValue = snr-10*log10(ofdmInfo.FFTLength/ofdmInfo.NumTones);

Extract the field indices that correspond to the HE-LTF and the HE-Data field.

indHELTF = wlanFieldIndices(cfgMU,"HE-LTF");
indData = wlanFieldIndices(cfgMU,"HE-Data");

Use the getPSDULength object function to get the PSDU length of the configuration in bytes. Multiply by eight to convert the unit of length to bits.

cfgLength = getPSDULength(cfgMU)*8;

Generate a random sequence of bits to transmit. The number of bits is equal to the PSDU length of the first RU.

txBits = randi([0 1],cfgLength(1),1);

Generate a time-domain waveform for the configuration and bits. Pass the waveform through an AWGN channel.

tx = wlanWaveformGenerator(txBits,cfgMU);
rx = awgn(tx,snrValue);

Extract the indices of the received waveform that correspond to the HE-LTF. Demodulate the HE-LTF and perform channel estimation at the single-stream pilots.

rxHELTF = rx(indHELTF(1):indHELTF(2),:);
heltfDemod = wlanHEDemodulate(rxHELTF,"HE-LTF",cfgMU,ruNumber);
[~,chanEstSSPilots] = wlanHELTFChannelEstimate(heltfDemod,cfgMU,ruNumber);

Extract the indices of the received waveform that correspond to the EHT-Data field. Demodulate the EHT-Data field and extract the demodulated symbols that correspond to the pilot subcarriers.

rxData = rx(indData(1):indData(2),:);
demodSym = wlanHEDemodulate(rxData,"HE-Data",cfgMU,ruNumber);
X = demodSym(ofdmInfo.PilotIndices,:,:);

Estimate the noise power from the channel estimate at the pilot symbols.

nest = wlanHEDataNoiseEstimate(X,chanEstSSPilots,cfgMU,ruNumber);

Extract the demodulated symbols that correspond to the data subcarriers. Recover the received bits from the demodulated data field and verify that they match the transmitted bits.

dataDemod = demodSym(ofdmInfo.DataIndices,:,:);
userIndex = ruNumber;
rxBits = wlanHEDataBitRecover(dataDemod,nest,cfgMU,userIndex);
disp(isequal(txBits,rxBits))
   1

Input Arguments

collapse all

Demodulated EHT-Data pilot symbols, specified as an NSP-by-NSYM-by-NR array. NSP is the number of pilot subcarriers, NSYM is the number of demodulated HE-Data symbols, and NR is the number of receive antennas.

Data Types: single | double
Complex Number Support: Yes

Channel estimate at each pilot subcarrier location for each HE long training field (HE-LTF) symbol, returned as an NSP-by-NLTF-by-NR array. NSP is the number of pilot subcarriers, NLTF is the number of demodulated HE-LTF OFDM symbols, and NR is the number of receive antennas. The function assumes that this estimate is performed with one space-time stream at the transmitter.

Data Types: single | double
Complex Number Support: Yes

HE physical layer (PHY) format configuration, specified as an object of type wlanHESUConfig, wlanHETBConfig, or wlanHERecoveryConfig.

HE MU format configuration, specified as a wlanHEMUConfig object.

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

Output Arguments

collapse all

Noise variance estimate, returned as a positive real scalar.

Data Types: single | double

More About

collapse all

HE-LTF

The HE-LTF is located between the HE-STF and data field of an HE packet.

As described in Section 27.3.11.10 of IEEE® Std 802.11ax™-2021, the receiver can use the HE-LTF to estimate the MIMO channel between the set of constellation mapper outputs (or, if STBC is applied, the STBC encoder outputs) and the receive chains. An HE PPDU supports three HE-LTF types: 1x HE-LTF, 2x HE-LTF, and 4x HE-LTF, which determine symbol durations of 3.2, 6.4, and 12.8 µs, respectively. In these durations, guard intervals are omitted.

The number of HE-LTF OFDM symbols transmitted can be one, two, four, six, or eight. The following table, adapted from Table 21-13 in IEEE Std 802.11™-2020, shows how the number of HE-LTF OFDM symbols depends on the number of space-time streams.

NSTS,totalNSYM
11
22
34
44
56
66
78
88

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 R2023b