Update Code for VHT Reception
If your code contains legacy functions for very high-throughput (VHT) reception, you can replace them with functions that support separate reception operations. (since R2026a)
| Legacy Functions | Replacement Functions |
|---|---|
wlanVHTSIGARecover | |
wlanVHTLTFDemodulate | wlanVHTDemodulate |
wlanVHTSIGBRecover | |
wlanVHTDataRecover |
Differences Between the Legacy and Replacement Functions
Updating the legacy functions requires you to configure additional specifications for the replacement functions.
The
wlanVHTSIGARecoverfunction's first input is a time-domain signal that contains the very high-throughput signal A (VHT-SIG-A) field of a VHT transmission. The function performs demodulation, pilot error tracking, equalization, and data bit recovery in one call. The replacement functionswlanVHTDemodulate,wlanVHTTrackPilotError,wlanVHTEqualize, andwlanVHTSIGABitRecoverhandle the four steps separately. When you use the first three replacement functions, you must specify thefieldinput as"VHT-SIG-A".The
wlanVHTLTFDemodulatefunction's first input is a time-domain signal that contains the very high-throughput long training field (VHT-LTF) of a VHT transmission. The first input of its replacement,wlanVHTDemodulate, is a time-domain signal that can correspond to any field of a VHT transmission. The additional inputfieldspecifies the field that the function demodulates.The
wlanVHTSIGBRecoverfunction's first input is a time-domain signal that contains the very high-throughput signal B (VHT-SIG-B) field of a VHT transmission. The function performs demodulation, pilot error tracking, equalization, and data bit recovery in one call. The replacement functionswlanVHTDemodulate,wlanVHTTrackPilotError,wlanVHTEqualize, andwlanVHTSIGBBitRecoverhandle the four steps separately. When you use the first three replacement functions, you must specify thefieldinput as"VHT-SIG-B".The
wlanVHTDataRecoverfunction's first input is a time-domain signal that contains the data field of a VHT transmission. The function performs demodulation, pilot error tracking, equalization, and data bit recovery in one call. The replacement functionswlanVHTDemodulate,wlanVHTTrackPilotError,wlanVHTEqualize, andwlanVHTDataBitRecoverhandle the four steps separately. When you use the first three replacement functions, you must specify thefieldinput as"VHT-Data".
Examples of Code Updates
Here are some examples that show how to update legacy code. These examples assume you have:
Created a
wlanVHTConfigobject calledcfgUsed the
wlanWaveformGeneratorfunction to create a time-domain waveform calledtxwithcfgand data bitsbitsObtained appropriate channel and noise estimates, called
chEstandnoiseEstrespectively
| Function to Be Replaced | Legacy Code | Updated Code |
|---|---|---|
wlanVHTSIGARecover |
field = "VHT-SIG-A";
ind = wlanFieldIndices(cfg,field);
tx = tx(ind(1):ind(2),:);
[rxBits,failCRC,sym,cpe] = wlanVHTSIGARecover(tx,chEst,noiseEst,cfg); |
field = "VHT-SIG-A";
ind = wlanFieldIndices(cfg,field);
tx = tx(ind(1):ind(2),:);
demodSIGA = wlanVHTDemodulate(tx,field,cfg);
[trackedSym,cpe,ae] = wlanVHTTrackPilotError(demodSIGA,chEst,cfg,field);
[sym,csi] = wlanVHTEqualize(trackedSym,chEst,noiseEst,cfg,field);
[rxBits,failCRC] = wlanVHTSIGABitRecover(sym,noiseEst,csi); |
wlanVHTLTFDemodulate |
field = "VHT-LTF";
ind = wlanFieldIndices(cfg,field);
tx = tx(ind(1):ind(2),:);
sym = wlanVHTLTFDemodulate(tx,cfg);
|
field = "VHT-LTF";
ind = wlanFieldIndices(cfg,field);
tx = tx(ind(1):ind(2),:);
sym = wlanVHTDemodulate(rx,field,cfg); |
wlanVHTSIGBRecover (single user) |
field = "VHT-SIG-B";
ind = wlanFieldIndices(cfg,field);
tx = tx(ind(1):ind(2),:);
[rxBits,sym,cpe] = wlanVHTSIGBRecover(tx,chEst,noiseEst,cfg); |
field = "VHT-SIG-B";
ind = wlanFieldIndices(cfg,field);
tx = tx(ind(1):ind(2),:);
demodSIGB = wlanVHTDemodulate(tx,field,cfg);
[trackedSym,cpe,ae] = wlanVHTTrackPilotError(demodSIGB,chEst,cfg,field);
[sym,csi] = wlanVHTEqualize(trackedSym,chEst,noiseEst,cfg,field);
rxBits = wlanVHTSIGBBitRecover(sym,noiseEst,csi,cfg); |
wlanVHTDataRecover (single user) |
field = "VHT-Data";
ind = wlanFieldIndices(cfg,field);
tx = tx(ind(1):ind(2),:);
[rxBits,vhtsigbCRC,sym,cpe,ae] = wlanVHTDataRecover(tx,chEst,noiseEst,cfg); |
field = "VHT-Data"; ind = wlanFieldIndices(cfg,field); tx = tx(ind(1):ind(2),:); demodData = wlanVHTDemodulate(tx,field,cfg); [trackedSym,cpe,ae] = wlanVHTTrackPilotError(demodData,chEst,cfg,field); [sym,csi] = wlanVHTEqualize(trackedSym,chEst,noiseEst,cfg,field); [rxBits,vhtsigbCRC] = wlanVHTDataBitRecover(sym,noiseEst,csi,cfg,LDPCDecodingMethod="bp"); |
wlanVHTSIGBRecover (multi-user) |
field = "VHT-SIG-B";
ind = wlanFieldIndices(cfg,field);
tx = tx(ind(1):ind(2),:);
[rxBits,sym,cpe] = wlanVHTSIGBRecover(tx,chEst,noiseEst,cfg,userIdx,numSTS); |
field = "VHT-SIG-B";
ind = wlanFieldIndices(cfg,field);
tx = tx(ind(1):ind(2),:);
demodSIGB = wlanVHTDemodulate(tx,field,cfg);
[trackedSym,cpe,ae] = wlanVHTTrackPilotError(demodSIGB,chEst,cfg,field);
cfg.NumSpaceTimeStreams = numSTS;
[sym,csi] = wlanVHTEqualize(trackedSym,chEst,noiseEst,cfg,field,userIdx);
rxBits = wlanVHTSIGBBitRecover(sym,noiseEst,csi,cfg); |
wlanVHTDataRecover (multi-user) |
field = "VHT-Data";
ind = wlanFieldIndices(cfg,field);
tx = tx(ind(1):ind(2),:);
[rxBits,vhtsigbCRC,sym,cpe,ae] = wlanVHTDataRecover(tx,chEst,noiseEst,cfg,userIdx,numSTS); |
field = "VHT-Data"; ind = wlanFieldIndices(cfg,field); tx = tx(ind(1):ind(2),:); demodData = wlanVHTDemodulate(tx,field,cfg); [trackedSym,cpe,ae] = wlanVHTTrackPilotError(demodData,chEst,cfg,field); cfg.NumSpaceTimeStreams = numSTS; [sym,csi] = wlanVHTEqualize(trackedSym,chEst,noiseEst,cfg,field,userIdx); [rxBits,vhtsigbCRC] = wlanVHTDataBitRecover(sym,noiseEst,csi,cfg,LDPCDecodingMethod="bp"); |
See Also
wlanVHTDemodulate | wlanVHTTrackPilotError | wlanVHTEqualize | wlanVHTDataBitRecover | wlanVHTSIGABitRecover | wlanVHTSIGBBitRecover