wlanHTLTFChannelEstimate
Channel estimation using HTLTF
Syntax
Description
Examples
Estimate SISO Channel Using HTLTF
Estimate and plot the channel coefficients of an HTmixed format channel by using the high throughput long training field.
Create an HT format configuration object. Generate the corresponding HTLTF based on the object.
cfg = wlanHTConfig; txSig = wlanHTLTF(cfg);
Multiply the transmitted HTLTF 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 HTLTF.
est = wlanHTLTFChannelEstimate(demodSig,cfg);
Plot the channel estimate.
scatterplot(est) grid
The channel estimate matches the complex channel multiplier.
Estimate MIMO Channel Using HTLTF
Estimate the channel coefficients of a 2x2 MIMO channel by using the high throughput long training field. Recover the HTdata field and determine the number of bit errors.
Create an HTmixed 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'); rxWaveformNoNoise = tgnChan(txWaveform);
Create an AWGN channel with noise power, nVar
, corresponding to a receiver having a 9 dB noise figure. The noise power is equal to kTBF, where k is Boltzmann's constant, T is the ambient noise temperature (290K), B is the bandwidth (20 MHz), and F is the noise figure (9 dB).
nVar = 10^((228.6 + 10*log10(290) + 10*log10(20e6) + 9)/10); awgnChan = comm.AWGNChannel('NoiseMethod','Variance', ... 'Variance',nVar);
Pass the signal through the AWGN channel.
rxWaveform = awgnChan(rxWaveformNoNoise);
Determine the indices for the HTLTF. Extract the HTLTF from the received waveform. Demodulate the HTLTF.
indLTF = wlanFieldIndices(cfg,'HTLTF');
rxLTF = rxWaveform(indLTF(1):indLTF(2),:);
ltfDemodSig = wlanHTLTFDemodulate(rxLTF,cfg);
Generate the channel estimate by using the demodulated HTLTF signal. Specify a smoothing filter span of three subcarriers.
chEst = wlanHTLTFChannelEstimate(ltfDemodSig,cfg,3);
Extract the HTdata field from the received waveform.
indData = wlanFieldIndices(cfg,'HTData');
rxDataField = rxWaveform(indData(1):indData(2),:);
Recover the data and verify that there no bit errors occurred.
rxPSDU = wlanHTDataRecover(rxDataField,chEst,nVar,cfg); numErrs = biterr(txPSDU,rxPSDU)
numErrs = 0
Input Arguments
demodSig
— Demodulated HTLTF signal
3D array
Demodulated HTLTF signal, specified as an N_{ST}byN_{SYM}byN_{R} array. N_{ST} is the number of occupied subcarriers, N_{SYM} is the number of HTLTF OFDM symbols, and N_{R} is the number of receive antennas.
Data Types: double
Complex Number Support: Yes
cfg
— Configuration information
wlanHTConfig
object
Configuration information, specified as a wlanHTConfig
object.
span
— Filter span
positive odd integer
Filter span of the frequency smoothing filter, specified as an odd integer. The span is expressed as a number of subcarriers.
Note
If adjacent subcarriers are highly correlated, frequency smoothing will result in significant noise reduction. However, in a highly frequency selective channel, smoothing may degrade the quality of the channel estimate.
Data Types: double
Output Arguments
chEst
— Channel estimate
3D array
Channel estimate between all combinations of spacetime streams and receive antennas, returned as an N_{ST}by(N_{STS}+N_{ESS})byN_{R} array. N_{ST} is the number of occupied subcarriers, N_{STS} is the number of spacetime streams. N_{ESS} is the number of extension spatial streams. N_{R} is the number of receive antennas. Data and pilot subcarriers are included in the channel estimate.
Data Types: double
Complex Number Support: Yes
More About
HTLTF
The high throughput long training field (HTLTF) is located between the HTSTF and data field of an HTmixed packet.
As described in Section 19.3.9.4.6 of IEEE^{®} Std 802.11™2016, the receiver can use the HTLTF to estimate the MIMO channel between the set of QAM mapper outputs (or, if STBC is applied, the STBC encoder outputs) and the receive chains. The HTLTF portion has one or two parts. The first part consists of one, two, or four HTLTFs that are necessary for demodulation of the HTData portion of the PPDU. These HTLTFs are referred to as HTDLTFs. The optional second part consists of zero, one, two, or four HTLTFs that can be used to sound extra spatial dimensions of the MIMO channel not utilized by the HTData portion of the PPDU. These HTLTFs are referred to as HTELTFs. Each HT long training symbol is 4 μs. The number of spacetime streams and the number of extension streams determines the number of HTLTF symbols transmitted.
Tables 1912, 1913 and 9014 from IEEE Std 802.112012 are reproduced here.
N_{STS}
Determination  N_{HTDLTF}
Determination  N_{HTELTF}
Determination  

Table 1912 defines the number of spacetime streams (N_{STS}) based on the number of spatial streams (N_{SS}) from the MCS and the STBC field.  Table 1913 defines the number of HTDLTFs required for the N_{STS}.  Table 1914 defines the number of HTELTFs required for the number of extension spatial streams (N_{ESS}). N_{ESS} is defined in HTSIG_{2}.  



Additional constraints include:
N_{HTLTF} = N_{HTDLTF} + N_{HTELTF} ≤ 5.
N_{STS} + N_{ESS} ≤ 4.
When N_{STS} = 3, N_{ESS} cannot exceed one.
If N_{ESS} = 1 when N_{STS} = 3 then N_{HTLTF} = 5.
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
C/C++ Code Generation
Generate C and C++ code using MATLAB® Coder™.
Version History
See Also
^{1} IEEE Std 802.112012 Adapted and reprinted with permission from IEEE. Copyright IEEE 2012. All rights reserved.
Open Example
You have a modified version of this example. Do you want to open this example with your edits?
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)