Main Content

wlanEHTEqualize

Equalize demodulated EHT field symbols

Since R2023b

Description

[eqSym,csi] = wlanEHTEqualize(sym,chEst,noiseEst,cfg,field) equalizes the demodulated extremely high-throughput (EHT) 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] = wlanEHTEqualize(___,userIdx) specifies the user index in addition to any input argument combination from the previous syntax. This syntax applies only when cfg is a wlanEHTMUConfig object and field is "EHT-Data".

example

Examples

collapse all

Create a WLAN EHT multi-user configuration object with a channel bandwidth of 320 MHz.

cfg = wlanEHTMUConfig("CBW320");
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 get channel and noise estimates.

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

Isolate and demodulate the U-SIG field.

rxUSIG = rx(ind.USIG(1):ind.USIG(2),:);
usigDemod = wlanEHTDemodulate(rxUSIG,"U-SIG",cfg);

Estimate the channel at the U-SIG field.

chEst = wlanPreEHTChannelEstimate(usigDemod,chEstLLTF,cbw);

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

[eqSym,csi] = wlanEHTEqualize(usigDemod,chEst,noiseEst,cfg,"U-SIG");

Create a WLAN EHT multi-user configuration object with the allocation index set to 48. This setting specifies an OFDMA configuration with one 106+26-tone multiple resource unit (MRU) and one 106-tone resource unit (RU) in a 20 MHz channel. Both resource units have one user.

cfg = wlanEHTMUConfig(48);
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 estimate the noise power.

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

Isolate and demodulate the EHT-LTF for the 106+26-tone MRU. Use the demodulated symbols to estimate the channel.

rxEHTLTF = rx(ind.EHTLTF(1):ind.EHTLTF(2),:);
ruNumber = 1;
ehtltfDemod = wlanEHTDemodulate(rxEHTLTF,"EHT-LTF",cfg,ruNumber);
chEst = wlanEHTLTFChannelEstimate(ehtltfDemod,cfg,ruNumber);

Isolate and demodulate the HE-Data field for the 106+26-tone MRU.

rxData = rx(ind.EHTData(1):ind.EHTData(2),:);
sym = wlanEHTDemodulate(rxData,"EHT-Data",cfg,ruNumber);

Use the channel and noise estimates to equalize the demodulated EHT-Data symbols for the MRU's user.

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

Input Arguments

collapse all

Demodulated EHT 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: single | double

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 "EHT-Data"

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

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

Data Types: single | double
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: wlanEHTMUConfig, wlanEHTTBConfig, or wlanEHTRecoveryConfig.

Field to equalize, specified as one of these values:

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

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

  • "U-SIG"— Equalize the universal signal (U-SIG) field.

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

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

Data Types: char | string

User index, specified as a positive integer.

Note

This input is required only when cfg is a wlanEHTMUConfig object and field is "EHT-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 "U-SIG", eqSym has size L*NSC-by-NSYM, where NSC is the number of data, pilot, or combined data and pilot subcarriers, NSYM is the number of OFDM symbols, and L is the number of subblocks. L is 1 if the channel bandwidth is 80 MHz or less, 2 if the channel bandwidth is 160 MHz, and 4 if the channel bandwidth is 320 MHz.

  • If field is "EHT-SIG", the size further depends on the PPDU type of cfg:

    PPDU TypeSize of eqSym
    Single-user or sounding NDPNSC-by-NSYM
    Multi-user non-OFDMAC*NSC-by-NSYM
    OFDMAC*L*NSC-by-NSYM

    In the table, C is the number of content channels in the transmission. It is equal to 1 for a 20 MHz channel and equal to 2 for all other bandwidths.

  • If field is "EHT-Data", eqSym has size NSC-by-NSYM-by-NSTS, where NSC is the number of subcarriers in the sym input, NSYM is the number of OFDM symbols, and 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: double | single
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

wlanEHTEqualize 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, wlanEHTEqualize uses ZF when the noiseEst input is 0 and MMSE for all other values.

Extended Capabilities

C/C++ Code Generation
Generate C and C++ code using MATLAB® Coder™.

Version History

Introduced in R2023b

expand all