Main Content

wlanHTLTFChannelEstimate

R2026b

Channel estimation using HT-LTF

Description

chanEst = wlanHTLTFChannelEstimate(demodSig,cfg) returns the channel estimate using the demodulated HT-LTF signal, demodSig, given the parameters specified in configuration object cfg.

example

chanEst = wlanHTLTFChannelEstimate(demodSig,cfg,span) returns the channel estimate and specifies the span of a moving-average filter used to perform frequency smoothing.

example

Examples

collapse all

Estimate and plot the channel coefficients of an HT-mixed format channel by using the high throughput long training field.

Create an HT format configuration object. Generate the corresponding HT-LTF based on the object.

cfg = wlanHTConfig;
txSig = wlanHTLTF(cfg);

Multiply the transmitted HT-LTF signal by 0.2 + 0.1i and pass it through an AWGN channel. Demodulate the received signal.

rxSig = awgn(txSig*(0.2+0.1i),30);
demodSig = wlanHTLTFDemodulate(rxSig,cfg);

Estimate the channel response using the demodulated HT-LTF.

chanEst = wlanHTLTFChannelEstimate(demodSig,cfg);

Plot the channel estimate.

scatterplot(chanEst)
grid

Figure Scatter Plot contains an axes object. The axes object with title Scatter Plot, xlabel In-Phase, ylabel Quadrature contains a line object which displays its values using only markers.

The channel estimate matches the complex channel multiplier.

Estimate the channel coefficients of a 2x2 MIMO channel by using the high throughput long training field. Recover the HT-data field and determine the number of bit errors.

Create an HT-mixed format configuration object for a channel having two spatial streams and four transmit antennas. Transmit a complete HT waveform.

cfg = wlanHTConfig('NumTransmitAntennas',2, ...
    'NumSpaceTimeStreams',2,'MCS',11);
txPSDU = randi([0 1],8*cfg.PSDULength,1);
txWaveform = wlanWaveformGenerator(txPSDU,cfg);

Pass the transmitted waveform through a 2x2 TGn channel.

tgnChan = wlanTGnChannel('SampleRate',20e6, ...
    'NumTransmitAntennas',2, ...
    'NumReceiveAntennas',2, ...
    'LargeScaleFadingEffect','Pathloss and shadowing', ...
    'NormalizeChannelOutputs',false);
rxWaveformNoNoise = tgnChan(txWaveform);

Add AWGN to the received signal.

snrdB = 80; % SNR (dB)
% Convert the SNR per active subcarrier to total SNR to account for noise energy in null subcarriers
ofdmInfo = wlanHTOFDMInfo("HT-LTF",cfg);
snrValue = convertSNR(snrdB,"snrsc","snr",FFTLength=ofdmInfo.FFTLength,NumActiveSubcarriers=ofdmInfo.NumTones);
nVar = 10^((-snrValue-30)/10); % Noise variance (W) for 0 dBm (-30 dBW) signal power
rxWaveform = awgn(rxWaveformNoNoise,snrValue);

Determine the indices for the HT-LTF. Extract the HT-LTF from the received waveform. Demodulate the HT-LTF.

indLTF  = wlanFieldIndices(cfg,'HT-LTF');
rxLTF = rxWaveform(indLTF(1):indLTF(2),:);
ltfDemodSig = wlanHTLTFDemodulate(rxLTF,cfg);

Generate the channel estimate by using the demodulated HT-LTF signal. Specify a smoothing filter span of three subcarriers.

chanEst = wlanHTLTFChannelEstimate(ltfDemodSig,cfg,3);

Extract the HT-data field from the received waveform.

indData = wlanFieldIndices(cfg,'HT-Data');
rxDataField = rxWaveform(indData(1):indData(2),:);

Recover the data and verify that there no bit errors occurred.

rxPSDU = wlanHTDataRecover(rxDataField,chanEst,nVar,cfg);

numErrs = biterr(txPSDU,rxPSDU)
numErrs = 
0

Input Arguments

collapse all

Demodulated HT-LTF signal, specified as an NST-by-NSYM-by-NR array. NST is the number of occupied subcarriers, NSYM is the number of HT-LTF OFDM symbols, and NR is the number of receive antennas.

Data Types: single | double
Complex Number Support: Yes

Configuration information, specified as a wlanHTConfig object.

Filter span of the frequency smoothing filter, specified as a positive odd integer and expressed as a number of subcarriers. Frequency smoothing is applied only when span is specified and greater than one. See Frequency Smoothing.

Data Types: single | double

Output Arguments

collapse all

Channel estimate between all combinations of space-time streams and receive antennas, returned as an NST-by-(NSTS+NESS)-by-NR array. NST is the number of occupied subcarriers, NSTS is the number of space-time streams. NESS is the number of extension spatial streams. NR is the number of receive antennas. Data and pilot subcarriers are included in the channel estimate.

Data Types: single | double
Complex Number Support: Yes

More About

collapse all

References

[1] IEEE Std 802.11™-2012 IEEE Standard for Information technology — Telecommunications and information exchange between systems, Local and metropolitan area networks — Specific requirements — Part 11: Wireless LAN Medium Access Control (MAC) and Physical Layer (PHY) Specifications.

[2] Perahia, E., and R. Stacey. Next Generation Wireless LANs: 802.11n and 802.11ac . 2nd Edition, United Kingdom: Cambridge University Press, 2013.

Extended Capabilities

expand all

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

Version History

Introduced in R2015b

expand all


1 IEEE Std 802.11-2020 Adapted and reprinted with permission from IEEE. Copyright IEEE 2020. All rights reserved.

2 © IEEE 2021. All rights reserved.