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:
Create the
wlanTGayChannel
object and set its properties.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
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.tgay
= wlanTGayChannel
sets
properties using one or more name-value pairs. Enclose each property name in quotation
marks. For example, tgay
= wlanTGayChannel(Name,Value)wlanTGayChannel('SampleRate',1e9,'Environment','Large hotel
lobby')
creates a TGay channel with a 1-GHz sample rate in a large hotel lobby
environment.
Properties
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.
SampleRate
— Sample rate of input signal
2.64e9
(default) | positive scalar
Sample rate of the input signal, in Hz, specified as a positive scalar.
Data Types: double
CarrierFrequency
— Center frequency of input signal
6e10
(default) | positive scalar
Center frequency of the input signal, in Hz, specified as a positive scalar.
Data Types: double
Environment
— Channel model environment
'Open area hotspot'
(default) | 'Street canyon hotspot'
| 'Large hotel lobby'
Channel model environment, specified as 'Open area hotspot'
,
'Street canyon hotspot'
, or 'Large hotel lobby'
.
For more information, see [1].
Data Types: char
| string
RoadWidth
— Street canyon road width
16
(default) | positive scalar
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
SidewalkWidth
— Street canyon sidewalk width
6
(default) | positive scalar
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
RoomDimensions
— Hotel lobby dimensions
[20 15 6]
(default) | 1-by-3 vector of positive values
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
UserConfiguration
— User configuration
'SU-SISO'
(default) | 'SU-MIMO 1x1'
| 'SU-MIMO 2x2'
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 theArrayPolarization
property. You can check the number of data streams by using theinfo
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
ArraySeparation
— Separation between transmit arrays and receive arrays
[0.5 0.5]
(default) | 1-by-2 vector of positive values
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
ArrayPolarization
— Transmit and receive antenna array polarization type for SU-MIMO
'Single, Single'
(default) | 'Single, Dual'
| 'Dual, Dual'
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
TransmitArray
— Transmit antenna array
2-by-2 URA with 0.2 m element spacing (default) | wlanURAConfig
object
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.
TransmitArrayPosition
— Center of transmit antenna array
[0; 0; 5]
(default) | 3-by-1 real-valued vector
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
TransmitArrayOrientation
— Transmit antenna array orientation
[0; 0; 0]
(default) | 3-by-1 real-valued vector
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
TransmitArrayPolarization
— Transmit antenna array polarization type
'None'
(default) | 'Vertical'
| 'Horizontal'
| 'LHCP'
| 'RHCP'
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
ReceiveArray
— Receive antenna array
2-by-2 URA with element spacing of 0.2 m (default) | wlanURAConfig
object
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.
ReceiveArrayPosition
— Center of receive antenna array
[8; 0; 1.5]
(default) | 3-by-1 real-valued vector
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
ReceiveArrayOrientation
— Receive antenna array orientation
[0; 0; 0]
(default) | 3-by-1 real-valued vector
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
ReceiveArrayPolarization
— Receive antenna array polarization type
'None'
(default) | 'Vertical'
| 'Horizontal'
| 'LHCP'
| 'RHCP'
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
ReceiveArrayVelocitySource
— Receive antenna array velocity source
'Auto'
(default) | 'Custom'
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
ReceiveArrayVelocity
— Receive antenna array velocity
[1; 1; 0]
(default) | 3-by-1 real-valued vector
Receive antenna array velocity, in meters per second, specified as a 3-by-1 real-valued vector.
Data Types: double
RandomRays
— Generate random rays
true
(default) | false
Generate random rays (R-Rays), specified as a logical value of true
or false
.
Data Types: logical
IntraClusterRays
— Generate intra-cluster rays
true
(default) | false
Generate intra-cluster rays, specified as a logical value of true
or false
.
Data Types: logical
OxygenAbsorption
— Power losses due to oxygen absorption
0.015
(default) | nonnegative scalar
Power losses due to oxygen absorption, in dB/m, specified as a nonnegative scalar.
Data Types: double
BeamformingMethod
— Beamforming method
'Maximum power ray'
(default) | 'Custom'
Beamforming method, specified as 'Maximum power ray'
or
'Custom'
. For more information, see Section 6.5 in [2].
Data Types: char
| string
TransmitBeamformingVectors
— Transmit beamforming vectors
[0.5; 0.5; 0.5; 0.5]
(default) | NTE-by-NTS
complex-valued matrix
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
ReceiveBeamformingVectors
— Receive beamforming vectors
[0.5; 0.5; 0.5; 0.5]
(default) | NRE-by-NRS
complex-valued matrix
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
NormalizeImpulseResponses
— Normalize channel impulse responses
true
(default) | false
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
NormalizeChannelOutputs
— Normalize output by number of output streams
true
(default) | false
Normalize output by number of output streams, specified as a logical value of true
or false
.
Data Types: logical
RandomStream
— Source of random number stream
'Global stream'
(default) | 'mt19937ar with seed'
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'
:
Regenerates R-Rays when
RandomRays
is set totrue
Regenerates intra-cluster rays when
IntraClusterRays
is set totrue
Regenerates the receive antenna array velocity when
ReceiveArrayVelocitySource
is set to'Auto'
To use the mt19937ar algorithm for self-contained random number generation, set this
property to 'mt19937ar with seed'
.
Data Types: char
| string
Seed
— Initial seed of random number generator
73
(default) | nonnegative integer
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
Input Arguments
x
— Input signal
complex-valued matrix
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
y
— Output signal
complex-valued matrix
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
CIR
— Channel impulse response for all simulated rays
complex-valued matrix
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)
Specific to wlanTGayChannel
info | Characteristic information about multipath fading channels |
showEnvironment | Display channel environment with D-Rays from ray tracing |
Note
reset
: If you set the RandomStream
property of the wlanTGayChannel
System object to 'Global stream'
, using reset
:
Regenerates R-Rays when you set the
RandomRays
property totrue
Regenerates intra-cluster rays when you set the
IntraClusterRays
property totrue
Regenerates the receive antenna array velocity when you set the
ReceiveArrayVelocitySource
property to'Auto'
Examples
Return Characteristic Information of WLAN TGay Channel
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 802.11ad Waveform Through TGay Channel
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 Dual-Polarized Signal Through 802.11ay Channel
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');
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
Channel Impulse Response
These diagrams show the Q-D algorithm and base steps for generating the channel impulse response. For more information, see Section 4 of [1].
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
C/C++ Code Generation
Generate C and C++ code using MATLAB® Coder™.
Usage notes and limitations:
See System Objects in MATLAB Code Generation (MATLAB Coder).
Version History
Introduced in R2019a
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)