Main Content

wlanTGayChannel

Filter signal through 802.11ay multipath fading channel

Description

The wlanTGayChannel System object™ filters an input signal through an IEEE® 802.11ay™ (TGay) multipath fading channel. The channel model follows the quasi-deterministic (Q-D) approach specified in [1].

To filter an input signal by using a TGay multipath fading channel:

  1. Create the wlanTGayChannel object and set its properties.

  2. Call the object with arguments, as if it were a function.

To learn more about how System objects work, see What Are System Objects?

Creation

Description

tgay = wlanTGayChannel creates a TGay channel System object. This System object filters a real or complex input signal through the TGay channel to obtain a channel-impaired signal.

example

tgay = wlanTGayChannel(Name,Value) sets properties using one or more name-value pairs. Enclose each property name in quotation marks. For example, wlanTGayChannel('SampleRate',1e9,'Environment','Large hotel lobby') creates a TGay channel with a 1-GHz sample rate in a large hotel lobby environment.

example

Properties

expand all

Unless otherwise indicated, properties are nontunable, which means you cannot change their values after calling the object. Objects lock when you call them, and the release function unlocks them.

If a property is tunable, you can change its value at any time.

For more information on changing property values, see System Design in MATLAB Using System Objects.

Sample rate of the input signal, in Hz, specified as a positive scalar.

Data Types: double

Center frequency of the input signal, in Hz, specified as a positive scalar.

Data Types: double

Channel model environment, specified as 'Open area hotspot', 'Street canyon hotspot', or 'Large hotel lobby'. For more information, see [1].

Data Types: char | string

Street canyon road width, in meters, specified as a positive scalar. The road is parallel to the y-axis, on which it has its center.

Dependencies

To enable this property, set Environment to 'Street canyon hotspot'.

Data Types: double

Street canyon sidewalk width, in meters, specified as a positive scalar.

Dependencies

To enable this property, set Environment to 'Street canyon hotspot'.

Data Types: double

Hotel lobby dimensions, in meters, specified as a 1-by-3 vector of positive values. Each element of RoomDimensions specifies the length of the hotel lobby measured along an axis of the Cartesian coordinate system (x,y,z). The first element specifies the length along the x-axis. The second element specifies the length along the y-axis. The third element specifies the length along the z-axis. The origin of the coordinate system is on the floor of the hotel lobby, at the midpoint between the bounding walls.

Dependencies

To enable this property, set Environment to 'Large hotel lobby'.

Data Types: double

User configuration, specified as one of these values:

  • 'SU-SISO' – specify one transmit antenna array, one receive antenna array, and one data stream

  • 'SU-MIMO 1x1' – specify one transmit antenna array, one receive antenna array, and two data streams

  • 'SU-MIMO 2x2' – specify two transmit antenna arrays, two receive antenna arrays, and either two or four data streams, depending on the value of the ArrayPolarization property. You can check the number of data streams by using the info object function.

Use this property to specify the number of transmit and receive antenna arrays and the number of data streams at the transmitter and receiver. For more information, see Table 3-2 in [1].

Data Types: char | string

Separation between transmit arrays and receive arrays, in meters, specified as a 1-by-2 vector of positive values. The first element specifies the separation between centers of the transmit arrays. The second element specifies the separation between centers of the receive arrays. The distances between the relevant array centers are measured along the x-axes of the local array coordinate systems, in accordance with Figure 3-10 in [1].

Dependencies

To enable this property, set UserConfiguration to 'SU-MIMO 2x2'.

Data Types: double

Transmit and receive antenna array polarization type for SU-MIMO, specified as 'Single, Single', 'Single, Dual', or 'Dual, Dual'. For more information, refer to Table 3-2 in [1].

Dependencies

To enable this property, set UserConfiguration to 'SU-MIMO 1x1' or 'SU-MIMO 2x2'.

Data Types: char | string

Transmit antenna array, specified as a wlanURAConfig object. You can specify TransmitArray as a uniform rectangular array (URA), uniform linear array (ULA), or single element by setting the Size property of the wlanURAConfig object.

Center of transmit antenna array, specified as a 3-by-1 real-valued vector. This property specifies the displacement, in meters, from the origin of the Cartesian coordinate system to the center of the transmit antenna array.

Data Types: double

Transmit antenna array orientation, in degrees, specified as a 3-by-1 real-valued vector. Each element specifies the angle by which the local coordinate system of the transmit antenna array is rotated with respect to an axis of the global Cartesian coordinate system. The first element is the angle of rotation about the z-axis, and determines the target azimuthal angle. The second element is the angle of rotation about the rotated x-axis, and determines the target elevation angle. The third element is the angle of rotation about the rotated z-axis, and is specified for the non-symmetric azimuth distribution of the antenna gain. A positive value indicates a counterclockwise rotation. For more information, refer to Section 6.3.3 in [2].

Data Types: double

Transmit antenna array polarization type, specified as one of these values:

  • 'None' – An unpolarized transmit antenna array

  • 'Vertical' – A vertically polarized transmit antenna array

  • 'Horizontal' – A horizontally polarized transmit antenna array

  • 'LHCP' – A left-hand circularly polarized transmit antenna array

  • 'RHCP' – A right-hand circularly polarized transmit antenna array

Dependencies

To enable this property, set UserConfiguration to 'SU-SISO'.

Data Types: char | string

Receive antenna array, specified as a wlanURAConfig object. You can specify ReceiveArray as a URA, ULA, or single element by setting the Size property of the wlanURAConfig object.

Center of receive antenna array, specified as a 3-by-1 real-valued vector. This property specifies the displacement, in meters, from the origin of the Cartesian coordinate system to the center of the receive antenna array.

Data Types: double

Receive antenna array orientation, in degrees, specified as a 3-by-1 real-valued vector. Each element specifies the angle by which the local coordinate system of the receive antenna array is rotated with respect to an axis of the global Cartesian coordinate system. The first element is the angle of rotation about the z-axis, and determines the target azimuthal angle. The second element is the angle of rotation about the rotated x-axis, and determines the target elevation angle. The third element is the angle of rotation about the rotated z-axis, and is specified for the non-symmetric azimuth distribution of the antenna gain. A positive value indicates a counterclockwise rotation. For more information, refer to Section 6.3.3 in [2].

Data Types: double

Receive antenna array polarization type, specified as one of these values:

  • 'None' – An unpolarized receive antenna array

  • 'Vertical' – A vertically polarized receive antenna array

  • 'Horizontal' – A horizontally polarized receive antenna array

  • 'LHCP' – A left-hand circularly polarized receive antenna array

  • 'RHCP' – A right-hand circularly polarized receive antenna array

Dependencies

To enable this property, set UserConfiguration to 'SU-SISO'.

Data Types: char | string

Receive antenna array velocity source, specified as 'Auto' or 'Custom'. To specify a randomly generated receive array velocity, as defined in [1], set this property to 'Auto'.

Data Types: char | string

Receive antenna array velocity, in meters per second, specified as a 3-by-1 real-valued vector.

Data Types: double

Generate random rays (R-Rays), specified as a logical value of true or false.

Data Types: logical

Generate intra-cluster rays, specified as a logical value of true or false.

Data Types: logical

Power losses due to oxygen absorption, in dB/m, specified as a nonnegative scalar.

Data Types: double

Beamforming method, specified as 'Maximum power ray' or 'Custom'. For more information, see Section 6.5 in [2].

Data Types: char | string

Transmit beamforming vectors, specified as an NTE-by-NTS complex-valued matrix.

  • NTE is the number of elements in each transmit antenna array.

  • NTS is the number of input data streams.

You can obtain NTE and NTS by using the info object function.

Tunable: Yes

Dependencies

To enable this property, set BeamformingMethod to 'Custom'.

Data Types: double
Complex Number Support: Yes

Receive beamforming vectors, specified as an NRE-by-NRS complex-valued matrix.

  • NRE is the number of elements in each receive antenna array.

  • NRS is the number of output data streams.

You can obtain NRE and NRS by using the info object function.

Tunable: Yes

Dependencies

To enable this property, set BeamformingMethod to 'Custom'.

Data Types: double
Complex Number Support: Yes

Normalize channel impulse responses (CIRs), specified as a logical value of true or false. To normalize CIRs to 0 dB per stream, set this property to true.

Data Types: logical

Normalize output by number of output streams, specified as a logical value of true or false.

Data Types: logical

Source of random number stream, specified as 'Global stream' or 'mt19937ar with seed'. To use the current global random number stream for random number generation, set this property to 'Global stream'. Using the reset object function when this property is set to 'Global stream':

To use the mt19937ar algorithm for self-contained random number generation, set this property to 'mt19937ar with seed'.

Data Types: char | string

Initial seed of random number generator, specified as a nonnegative integer.

Dependencies

To enable this property, set RandomStream to 'mt19937ar with seed'.

Data Types: double

Usage

Description

y = tgay(x) returns output signal y by filtering input signal x through the TGay fading channel defined by wlanTGayChannel System object tgay.

example

[y,CIR] = tgay(x) also returns the TGay channel impulse response of the underlying fading process for all simulated rays.

Input Arguments

expand all

Input signal, specified as a complex-valued matrix of size Ns-by-NTS.

  • Ns is the number time-domain samples.

  • NTS is the number of input data streams.

Data Types: single | double
Complex Number Support: Yes

Output Arguments

expand all

Output signal, returned as a complex-valued matrix of size Ns-by-NRS.

  • Ns is the number time-domain samples.

  • NRS is the number of output data streams.

The wlanTGayChannel System object returns this output with the same data type as that of the x input.

Data Types: single | double
Complex Number Support: Yes

Channel impulse response for all simulated rays, returned as a complex-valued matrix of size Ns-by-Nray-by-NTS-by-NRS.

  • Ns is the number time-domain samples.

  • Nray is the number of simulated rays.

  • NTS is the number of input data streams.

  • NRS is the number of output data streams.

The wlanTGayChannel System object returns this output with the same data type as that of the x input.

Data Types: single | double
Complex Number Support: Yes

Object Functions

To use an object function, specify the System object as the first input argument. For example, to release system resources of a System object named obj, use this syntax:

release(obj)

expand all

infoCharacteristic information about multipath fading channels
showEnvironmentDisplay channel environment with D-Rays from ray tracing
stepRun System object algorithm
releaseRelease resources and allow changes to System object property values and input characteristics
resetReset internal states of System object

Note

reset: If you set the RandomStream property of the wlanTGayChannel System object to 'Global stream', using reset:

Examples

collapse all

Create a WLAN TGay multipath fading channel System object with default property values.

chan = wlanTGayChannel;

Return and display the characteristic information of the TGay channel.

s = info(chan)
s = struct with fields:
     ChannelFilterDelay: 7
    NumSamplesProcessed: 0
           NumTxStreams: 1
           NumRxStreams: 1
          NumTxElements: 4
          NumRxElements: 4

Filter an 802.11ad™ single-carrier unpolarized waveform through an SU-SISO 802.11ay™ channel, specifying a large hotel lobby environment. Check that the output signal is consistent when the same input waveform is filtered through the channel.

Create a directional-multi-gigabit-format (DMG-format) configuration object with the specified modulation and coding scheme (MCS).

cfgDMG = wlanDMGConfig('MCS','4');

Generate a DMG waveform for a randomly generated PSDU.

psdu = randi([0 1], 8*cfgDMG.PSDULength, 1);
txWaveform = wlanWaveformGenerator(psdu,cfgDMG);

Configure a TGay channel System object for a large hotel lobby environment, specifying the sample rate, transmit and receive antenna arrays, and source of the random number stream.

tgay =  wlanTGayChannel('SampleRate',wlanSampleRate(cfgDMG),'Environment','Large hotel lobby', ... 
    'TransmitArray',wlanURAConfig('Size',[4 4]),'ReceiveArray',wlanURAConfig('Size',[3 3]), ...
    'RandomStream','mt19937ar with seed','Seed',100);

Filter the waveform through the TGay channel.

rxWaveform1 = tgay(txWaveform);

Reset the channel and filter the waveform through the TGay channel again. Check that the output waveform is consistent when the same input waveform is filtered through the TGay channel after calling the reset object function.

reset(tgay);
rxWaveform2 =  tgay(txWaveform);
isequal(rxWaveform1,rxWaveform2)
ans = logical
   1

Filter a dual-polarized signal through a WLAN 802.11ay™ channel, specifying a street canyon environment.

Configure a TGay channel System object for a street canyon environment, specifying a user configuration of single-user multiple-input/multiple-output (SU-MIMO) with two transmit antenna arrays and two receive antenna arrays. Specify the transmit antenna arrays as two-element uniform linear arrays (ULAs) and the receive antenna arrays as single isotropic elements. Use a custom beamforming method to specify the transmit and receive beamforming vectors, and specify the source of the random number stream.

tgay = wlanTGayChannel('SampleRate',2e9,'Environment','Street canyon hotspot', ...
    'UserConfiguration','SU-MIMO 2x2','ArraySeparation',[0.8 0.8],'ArrayPolarization','Dual, Dual', ...
    'TransmitArray',wlanURAConfig('Size',[1 2]),'TransmitArrayOrientation',[10; 10; 10], ...
    'ReceiveArray',wlanURAConfig('Size',[1 1]),'BeamformingMethod','Custom','NormalizeImpulseResponses',false, ...
    'RandomStream','mt19937ar with seed','Seed',100);

Display the environment of the TGay channel.

showEnvironment(tgay);
title('Street Canyon Hotspot with Antenna Arrays and D-Rays');

Figure contains an axes object. The axes object with title Street Canyon Hotspot with Antenna Arrays and D-Rays, xlabel x (m), ylabel y (m) contains 27 objects of type patch, scatter, text, line.

Retrieve channel characteristics by using the info object function.

tgayInfo = tgay.info;

Formulate the beamforming vectors in terms of the number of transmit elements, receive elements, transmit streams, and receive streams obtained from tgayInfo.

NTE = tgayInfo.NumTxElements;
NTS = tgayInfo.NumTxStreams;
NRE = tgayInfo.NumRxElements;
NRS = tgayInfo.NumRxStreams;
tgay.TransmitBeamformingVectors = ones(NTE,NTS)/sqrt(NTE);
tgay.ReceiveBeamformingVectors = ones(NRE,NRS)/sqrt(NRE);

Create a random input signal and filter it through the TGay channel.

txSignal = complex(rand(100,NTS),rand(100,NTS));
rxSignal = tgay(txSignal);

Algorithms

expand all

References

[1] Maltsev, A., et al. Channel Models for 802.11ay. IEEE 802.11-15/1150r9, March 2017.

[2] Maltsev, A., et al.. Channel Models for 60GHz WLAN Systems. IEEE 802.11-09/0334r8, May 2010.

Extended Capabilities

Version History

Introduced in R2019a