wlanHEEqualize
Syntax
Description
[
specifies the user index in addition to any input argument combination from the previous
syntax. This syntax applies only when eqSym
,csi
] = wlanHEEqualize(___,userIdx
)cfg
is a wlanHEMUConfig
object and field
is "HE-Data"
.
Examples
Equalize L-SIG Symbols
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");
Equalize HE-Data Symbols
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
sym
— Demodulated HE field symbols
3-D array
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
chEst
— Channel estimate
matrix | 3-D array
Channel estimate, specified as a matrix or 3-D array. The size of this input must be:
NSTS is the number of space-time
streams specified in the cfg
input.
Data Types: double
| single
Complex Number Support: Yes
noiseEst
— Noise estimate
nonnegative real scalar
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
cfg
— Format configuration
wlanHEMUConfig
object | wlanHESUConfig
object | wlanHERecoveryConfig
object | wlanHETBConfig
object
Format configuration, specified as one of these objects: wlanHEMUConfig
, wlanHESUConfig
, wlanHERecoveryConfig
, or wlanHETBConfig
.
field
— Field to equalize
"L-LTF"
| "L-SIG"
| "RL-SIG"
| "HE-SIG-A"
| "HE-SIG-B"
| "HE-LTF"
| "HE-Data"
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 whencfg
is awlanHEMUConfig
orwlanHERecoveryConfig
object."HE-Data"
— Equalize the HE-Data field.
Data Types: char
| string
userIdx
— User index
positive integer
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
eqSym
— Equalized symbols
matrix | 3-D array
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 thesym
input. NSYM is the number of OFDM symbols. NSTS is 1 when theSTBC
of thecfg
input is1
(true
). Otherwise, NSTS is the number of space-time streams in thechEst
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
csi
— Channel state information
real-valued matrix
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
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
See Also
Functions
Objects
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)