Main Content

wlanHEEqualize

Equalize demodulated HE field symbols

Since R2023b

Description

[eqSym,csi] = wlanHEEqualize(sym,chEst,noiseEst,cfg,field) equalizes the demodulated high-efficiency (HE) field symbols sym from the specified field. The function uses the channel estimate chEst, the noise estimate noiseEst, and the parameters specified in cfg.

example

[eqSym,csi] = wlanHEEqualize(___,userIdx) specifies the user index in addition to any input argument combination from the previous syntax. This syntax applies only when cfg is a wlanHEMUConfig object and field is "HE-Data".

example

Examples

collapse all

Create a WLAN HE single-user configuration object with a channel bandwidth of 160 MHz.

cfg = wlanHESUConfig(ChannelBandwidth="CBW160");
cbw = cfg.ChannelBandwidth;

Generate a time-domain waveform for the configuration.

tx = wlanWaveformGenerator([1;0;0;1],cfg);

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

snr = 15;
rx = awgn(tx,snr);

Get the field indices for the configuration.

ind = wlanFieldIndices(cfg);

Isolate and demodulate the L-LTF. Use the demodulated symbols to get channel and noise estimates.

rxLLTF = rx(ind.LLTF(1):ind.LLTF(2),:);
lltfDemod = wlanHEDemodulate(rxLLTF,"L-LTF",cfg);
chEstLLTF = wlanLLTFChannelEstimate(lltfDemod,cfg);
noiseEst = wlanLLTFNoiseEstimate(lltfDemod);

Isolate and demodulate the L-SIG field. Estimate the channel there.

rxLSIG = rx(ind.LSIG(1):ind.LSIG(2),:);
sym = wlanHEDemodulate(rxLSIG,"L-SIG",cfg);
chEst = wlanPreHEChannelEstimate(sym,chEstLLTF,cbw);

Use the channel and noise estimates to equalize the demodulated L-SIG symbols.

[eqSym,csi] = wlanHEEqualize(sym,chEst,noiseEst,cfg,"L-SIG");

Create a WLAN HE multi-user configuration object. Set the allocation index to 0. This setting specifies nine 26-tone resource units (RUs), each with one user, in a 20 MHz channel bandwidth.

cfg = wlanHEMUConfig(0);
cbw = cfg.ChannelBandwidth;

Generate a time-domain waveform for the configuration.

tx = wlanWaveformGenerator([1;0;0;1],cfg);

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

snr = 20;
rx = awgn(tx,snr);

Get the field indices for the configuration.

ind = wlanFieldIndices(cfg);

Isolate and demodulate the L-LTF. Use the demodulated symbols to estimate the noise power.

rxLLTF = rx(ind.LLTF(1):ind.LLTF(2),:);
lltfDemod = wlanHEDemodulate(rxLLTF,"L-LTF",cfg);
noiseEst = wlanLLTFNoiseEstimate(lltfDemod);

Isolate and demodulate the HE-LTF for the first RU. Use the demodulated symbols to estimate the channel.

rxHELTF = rx(ind.HELTF(1):ind.HELTF(2),:);
ruNumber = 9;
heltfDemod = wlanHEDemodulate(rxHELTF,"HE-LTF",cfg,ruNumber);
chEst = wlanHELTFChannelEstimate(heltfDemod,cfg,ruNumber);

Isolate and demodulate the HE-Data field for the first RU.

rxData = rx(ind.HEData(1):ind.HEData(2),:);
sym = wlanHEDemodulate(rxData,"HE-Data",cfg,ruNumber);

Use the channel and noise estimates to equalize the demodulated HE-Data symbols for the first user.

userIdx = ruNumber;
[eqSym,csi] = wlanHEEqualize(sym,chEst,noiseEst,cfg,"HE-Data",userIdx);

Input Arguments

collapse all

Demodulated HE field symbols, specified as a 3-D array. The size of the array is NSC-by-NSYM-by-NR, where NSC is the number of subcarriers, NSYM is the number of OFDM symbols, and NR is the number of receive antennas.

Data Types: double | single

Channel estimate, specified as a matrix or 3-D array. The size of this input must be:

  • NSC-by-1-by-NR if the field input is not "HE-Data"

  • NSC-by-2-by-NR if the STBC property of the cfg input is 1 (true)

  • NSC-by-NSTS-by-NR if the field input is "HE-Data"

NSTS is the number of space-time streams specified in the cfg input.

Data Types: double | single
Complex Number Support: Yes

Noise estimate, specified as a nonnegative real scalar. This input determines how the function equalizes the input symbols. For more information, see Equalization Methods.

Data Types: double | single

Format configuration, specified as one of these objects: wlanHEMUConfig, wlanHESUConfig, wlanHERecoveryConfig, or wlanHETBConfig.

Field to equalize, specified as one of these values:

  • "L-LTF" — Equalize the legacy long training field (L-LTF).

  • "L-SIG" — Equalize the legacy signal (L-SIG) field.

  • "RL-SIG" — Equalize the repeated legacy signal (RL-SIG) field.

  • "HE-SIG-A"— Equalize the HE signal A (HE-SIG-A) field.

  • "HE-SIG-B" — Equalize the HE signal B (HE-SIG-B) field. This value applies only when cfg is a wlanHEMUConfig or wlanHERecoveryConfig object.

  • "HE-Data" — Equalize the HE-Data field.

Data Types: char | string

User index, specified as a positive integer.

Note

This input is required only when cfg is a wlanHEMUConfig object and field is "HE-Data". If you specify this input in any other situation, the function ignores it.

Output Arguments

collapse all

Equalized symbols, returned as a matrix or 3-D array. The size of this output depends on the value of the field input:

  • If field is "HE-SIG-B", eqSym has size C*NSC-by-NSYM, where NSC is the number of data, pilot, or combined data and pilot subcarriers in a 20 MHz channel bandwidth, NSYM is the number of OFDM symbols, and C is the number of content channels. C is 1 if the channel bandwidth is 20 MHz, and 2 otherwise.

  • If field is "HE-Data", eqSym has size NSC-by-NSYM-by-NSTS. NSC is the number of subcarriers in the sym input. NSYM is the number of OFDM symbols. NSTS is 1 when the STBC of the cfg input is 1 (true). Otherwise, NSTS is the number of space-time streams in the chEst input.

  • If field has any other value, eqSym has size NSC-by-NSYM, where NSC is the number of data, pilot, or combined data and pilot subcarriers in a 20 MHz channel bandwidth.

Data Types: single | double
Complex Number Support: Yes

Channel state information, returned as a real-valued matrix. The size of the matrix is NSC-by-NSTS, where NSC is equal to the first dimension of the eqSym output.

Data Types: single | double

More About

collapse all

Equalization Methods

wlanHEEqualize uses one of two equalization methods: zero forcing (ZF) or minimum mean square error (MMSE).

ZF equalization compensates for the effects of channel distortion by assuming the channel to be noiseless and by designing a filter using the inverse of the channel matrix. If the channel matrix is invertible and the channel is truly noiseless, the output of the equalizer is identical to the transmitted signal. However, if the channel is noisy, this method performs poorly because the filter exaggerates the effects of the noise.

MMSE equalization minimizes the mean squared error (MSE) between the original transmitted signal and the equalizer output. This method performs better for noisy channels because, unlike ZF, it takes the effects of noise into account. However, it is more computationally complex than ZF. Therefore, ZF is better suited to noiseless channels than MMSE.

Because of these facts, wlanHEEqualize uses ZF when the noiseEst input is 0 and MMSE for all other values.

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