wlanHESIGABitRecover
Recover information bits in HE-SIG-A field
Syntax
Description
[
recovers bits
,failCRC
] = wlanHESIGABitRecover(siga
,noiseVarEst
)bits
, the information bits contained in
siga
, the HE-SIG-A field of an IEEE®
802.11™ high-efficiency transmission subject to channel noise with estimated variance
noiseVarEst
. The function also returns failCRC
,
the result of the cyclic redundancy check (CRC) on bits
.
For more information on 802.11ax™ signal recovery, see Recovery Procedure for an 802.11ax Packet.
Examples
Recover Information Bits in HE-SIG-A Field
Create a WLAN HE SU configuration object with default settings and use it to generate a waveform.
cfgHE = wlanHESUConfig; cbw = cfgHE.ChannelBandwidth; waveform = wlanWaveformGenerator(1,cfgHE);
Get the WLAN field indices. Use them to isolate the HE-SIG-A field.
ind = wlanFieldIndices(cfgHE); rxSIGA = waveform(ind.HESIGA(1):ind.HESIGA(2),:);
Perform OFDM demodulation to extract the HE-SIG-A field.
sigaDemod = wlanHEDemodulate(rxSIGA,'HE-SIG-A',cbw);
Return the pre-HE OFDM information and use it to extract the demodulated HE-SIG-A data symbols.
preHEInfo = wlanHEOFDMInfo('HE-SIG-A',cbw);
siga = sigaDemod(preHEInfo.DataIndices,:);
Recover the HE-SIG-A information bits and other information, assuming no channel noise. Display the parity check result.
noiseVarEst = 0; [bits,failCRC] = wlanHESIGABitRecover(siga,noiseVarEst); disp(failCRC);
0
Recover HE-SIG-A Information Bits with Channel State Information
Recover the information bits in the HE-SIG-A field of a WLAN HE multiuser (HE-MU) waveform with specified channel state information.
Create a WLAN HE-MU-format configuration object with default settings and use it to generate an HE-MU waveform.
cfgHE = wlanHEMUConfig(0); cbw = cfgHE.ChannelBandwidth; waveform = wlanWaveformGenerator(1,cfgHE);
Obtain the WLAN field indices, which contain the modulated HE-SIG-A symbols.
ind = wlanFieldIndices(cfgHE); rxSIGA = waveform(ind.HESIGA(1):ind.HESIGA(2),:);
Perform OFDM demodulation to extract the HE-SIG-A field.
sigaDemod = wlanHEDemodulate(rxSIGA,'HE-SIG-A',cbw);
Return the pre-HE OFDM information and extract the demodulated HE-SIG-A symbols.
preHEInfo = wlanHEOFDMInfo('HE-SIG-A',cbw);
siga = sigaDemod(preHEInfo.DataIndices,:);
Specify the channel state information and assume no channel noise.
csi = ones(52,1); noiseVarEst = 0;
Recover the HE-SIG-A information bits and other information. Display the CRC result.
[bits,failCRC] = wlanHESIGABitRecover(siga,noiseVarEst,csi); disp(failCRC);
0
Update HE MU Recovery Configuration Object
Update a WLAN HE recovery configuration object by interpreting recovered HE-SIG-A and HE-SIG-B information bits.
Generate HE MU Waveform
Create a WLAN HE MU configuration object, setting the allocation index to 0
.
cfgHEMU = wlanHEMUConfig(0);
Generate a WLAN waveform and PPDU field indices for the specified configuration.
waveform = wlanWaveformGenerator(1,cfgHEMU); ind = wlanFieldIndices(cfgHEMU);
Recover L-SIG Bits
Create a WLAN recovery configuration object, specifying an HE MU packet format and the length of the L-SIG field.
cfg = wlanHERecoveryConfig('PacketFormat','HE-MU','ChannelBandwidth','CBW20');
Decode the L-SIG field and obtain the orthogonal frequency-division multiplexing (OFDM) information. The recovery configuration object requires this information to obtain the L-SIG length.
lsig = waveform(ind.LSIG(1):ind.LSIG(2)); lsigDemod = wlanHEDemodulate(lsig,'L-SIG',cfg.ChannelBandwidth); info = wlanHEOFDMInfo('L-SIG',cfg.ChannelBandwidth); lsigDemod = lsigDemod(info.DataIndices,:);
Recover the L-SIG bits and related information, making sure that the bits pass the parity check, and update the recovery configuration object with the L-SIG length. For this example we assume a noiseless channel. For more realistic results you can pass the waveform through an 802.11ax™ channel model by using the wlanTGaxChannel
System object™ and work with the received waveform.
csi = ones(52,1); [lsigBits,failCheck,lsigInfo] = wlanLSIGBitRecover(lsigDemod,0,csi); cfg.LSIGLength = lsigInfo.Length;
Update Recovery Configuration Object with HE-SIG-A Bits
Decode the HE-SIG-A field and recover the HE-SIG-A bits, ensuring that the bits pass the cyclic redundancy check (CRC).
siga = waveform(ind.HESIGA(1):ind.HESIGA(2));
sigaDemod = wlanHEDemodulate(siga,'HE-SIG-A',cfg.ChannelBandwidth);
sigaDemod = sigaDemod(info.DataIndices,:);
[sigaBits,failCRC] = wlanHESIGABitRecover(sigaDemod,0,csi);
disp(failCRC)
0
Update the recovery configuration object with the recovered HE-SIG-A bits. Display the updated object. A property value of -1
or 'Unknown'
indicates an unknown or undefined property, which can be updated after decoding the HE-SIG-B common and user fields of the HE MU packet.
[cfg,failInterpretation] = interpretHESIGABits(cfg,sigaBits)
cfg = wlanHERecoveryConfig with properties: PacketFormat: 'HE-MU' ChannelBandwidth: 'CBW20' LSIGLength: 878 SIGBCompression: 0 SIGBMCS: 0 SIGBDCM: 0 NumSIGBSymbolsSignaled: 10 STBC: 0 LDPCExtraSymbol: 1 PreFECPaddingFactor: 1 PEDisambiguity: 0 GuardInterval: 3.2000 HELTFType: 4 NumHELTFSymbols: 1 UplinkIndication: 0 BSSColor: 0 SpatialReuse: 0 TXOPDuration: 127 HighDoppler: 0 AllocationIndex: -1 NumUsersPerContentChannel: -1 RUTotalSpaceTimeStreams: -1 RUSize: -1 RUIndex: -1 STAID: -1 MCS: -1 DCM: -1 ChannelCoding: 'Unknown' Beamforming: -1 NumSpaceTimeStreams: -1 SpaceTimeStreamStartingIndex: -1
failInterpretation = logical
0
Update Recovery Configuration Object with HE-SIG-B Common Field Bits
Decode the HE-SIG-B common field, ensuring that all content channels pass the CRC.
len = getSIGBLength(cfg);
sigbCommon = waveform(double(ind.HESIGA(2))+(1:len.NumSIGBCommonFieldSamples),:);
sigbCommonDemod = wlanHEDemodulate(sigbCommon,'HE-SIG-B',cfgHEMU.ChannelBandwidth);
sigbCommonDemod = sigbCommonDemod(info.DataIndices);
[sigbCommonBits,status,~] = wlanHESIGBCommonBitRecover(sigbCommonDemod,0,csi,cfg);
disp(status)
Success
Update the recovery configuration object with the recovered HE-SIG-B common field bits and display the updated object. A field returned as -1
or 'Unknown'
indicates an unknown or undefined property value, which can be updated after decoding the HE-SIG-B user field of the HE MU packet.
[cfg,failInterpretation] = interpretHESIGBCommonBits(cfg,sigbCommonBits,status)
cfg = wlanHERecoveryConfig with properties: PacketFormat: 'HE-MU' ChannelBandwidth: 'CBW20' LSIGLength: 878 SIGBCompression: 0 SIGBMCS: 0 SIGBDCM: 0 NumSIGBSymbolsSignaled: 10 STBC: 0 LDPCExtraSymbol: 1 PreFECPaddingFactor: 1 PEDisambiguity: 0 GuardInterval: 3.2000 HELTFType: 4 NumHELTFSymbols: 1 UplinkIndication: 0 BSSColor: 0 SpatialReuse: 0 TXOPDuration: 127 HighDoppler: 0 AllocationIndex: 0 NumUsersPerContentChannel: 9 RUTotalSpaceTimeStreams: -1 RUSize: -1 RUIndex: -1 STAID: -1 MCS: -1 DCM: -1 ChannelCoding: 'Unknown' Beamforming: -1 NumSpaceTimeStreams: -1 SpaceTimeStreamStartingIndex: -1
failInterpretation = logical
0
Update Recovery Configuration Object with HE-SIG-B User Field Bits
Decode the HE-SIG-B user field, ensuring that all users pass the CRC.
sigbUser = waveform(ind.HESIGB(1):ind.HESIGB(2));
sigbUserDemod = wlanHEDemodulate(sigbUser,'HE-SIG-B',cfgHEMU.ChannelBandwidth);
sigbUserDemod = sigbUserDemod(info.DataIndices,:);
[sigbUserBits,failCRC,~] = wlanHESIGBUserBitRecover(sigbUserDemod,0,csi,cfg);
disp(failCRC)
0 0 0 0 0 0 0 0 0
Update the recovery configuration object with the recovered HE-SIG-B user field bits.
[user,failInterpretation] = interpretHESIGBUserBits(cfg,sigbUserBits,failCRC);
Display the results of interpretation and the third element of the user
output.
disp(failInterpretation)
0 0 0 0 0 0 0 0 0
disp(user{3})
wlanHERecoveryConfig with properties: PacketFormat: 'HE-MU' ChannelBandwidth: 'CBW20' LSIGLength: 878 SIGBCompression: 0 SIGBMCS: 0 SIGBDCM: 0 NumSIGBSymbolsSignaled: 10 STBC: 0 LDPCExtraSymbol: 1 PreFECPaddingFactor: 1 PEDisambiguity: 0 GuardInterval: 3.2000 HELTFType: 4 NumHELTFSymbols: 1 UplinkIndication: 0 BSSColor: 0 SpatialReuse: 0 TXOPDuration: 127 HighDoppler: 0 AllocationIndex: 0 NumUsersPerContentChannel: 9 RUTotalSpaceTimeStreams: 1 RUSize: 26 RUIndex: 3 STAID: 0 MCS: 0 DCM: 0 ChannelCoding: 'LDPC' Beamforming: 0 NumSpaceTimeStreams: 1 SpaceTimeStreamStartingIndex: 1
Input Arguments
siga
— Demodulated HE-SIG-A symbols
complex-valued matrix
Demodulated HE-SIG-A symbols, specified as a complex-valued matrix. The size of
siga
depends on the packet format.
For high-efficiency single-user (HE SU) or high-efficiency multiuser (HE MU) packets, specify a 52-by-2 matrix.
For high-efficiency extended-range single-user (HE ER SU) packets, specify a 52-by-4 matrix.
Data Types: single
| double
Complex Number Support: Yes
noiseVarEst
— Channel noise variance estimate
nonnegative scalar
Channel noise variance estimate, specified as a nonnegative scalar.
Data Types: single
| double
csi
— Channel state information
52-by-1 real-valued vector
Channel state information, specified as a 52-by-1 real-valued vector. To use the channel state information for enhanced demapping of the orthogonal frequency-division multiplexing (OFDM) symbols, specify this argument.
Data Types: single
| double
Output Arguments
bits
— Information bits recovered from HE-SIG-A field
52-by-1 binary column vector
Information bits recovered from HE-SIG-A field, returned as a 52-by-1 binary column vector.
Data Types: int8
failCRC
— CRC result
1
(true
) | 0
(false
)
CRC result, returned as a logical value of 1
(true
) or 0
(false
). The
function returns this argument as 1
(true
) if the
recovered bits fail the CRC. The function returns this argument as 0
(false
) if the recovered bits pass the CRC.
Data Types: logical
References
[1] IEEE Std 802.11-2020 (Revision of IEEE Std 802.11-2016). “Part 11: Wireless LAN Medium Access Control (MAC) and Physical Layer (PHY) Specifications.” IEEE Standard for Information Technology — Telecommunications and Information Exchange between Systems — Local and Metropolitan Area Networks — Specific Requirements.
[2] 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 R2019a
See Also
Functions
wlanFieldIndices
|wlanHEDataBitRecover
|wlanHESIGBCommonBitRecover
|wlanHESIGBUserBitRecover
|wlanLSIGBitRecover
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)
Asia Pacific
- Australia (English)
- India (English)
- New Zealand (English)
- 中国
- 日本Japanese (日本語)
- 한국Korean (한국어)