Filter signal through 802.11ay multipath fading channel
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?.
creates a TGay
channel System object, tgay
= wlanTGayChanneltgay
. This System object filters a real or complex input signal through the TGay channel to obtain a
channel-impaired signal.
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.
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 signal2.64e9
(default) | positive scalarSample rate of the input signal, in Hz, specified as a positive scalar.
Data Types: double
CarrierFrequency
— Center frequency of input signal6e10
(default) | positive scalarCenter 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 width16
(default) | positive scalarStreet canyon road width, in meters, specified as a positive scalar. The road is parallel to the y-axis, on which it has its center.
To enable this property, set Environment
to 'Street canyon hotspot'
.
Data Types: double
SidewalkWidth
— Street canyon sidewalk width6
(default) | positive scalarStreet canyon sidewalk width, in meters, specified as a positive scalar.
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 valuesHotel 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.
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 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
ArraySeparation
— Separation between transmit arrays and receive arrays[0.5 0.5]
(default) | 1-by-2 vector of positive valuesSeparation 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].
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].
To enable this property, set UserConfiguration
to 'SU-MIMO 1x1'
or
'SU-MIMO 2x2'
.
Data Types: char
| string
TransmitArray
— Transmit antenna arraywlanURAConfig
objectTransmit 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 vectorCenter 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 vectorTransmit 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
To enable this property, set UserConfiguration
to 'SU-SISO'
.
Data Types: char
| string
ReceiveArray
— Receive antenna arraywlanURAConfig
objectReceive 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 vectorCenter 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 vectorReceive 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
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 vectorReceive antenna array velocity, in meters per second, specified as a 3-by-1 real-valued vector.
Data Types: double
RandomRays
— Generate random raystrue
(default) | false
Generate random rays (R-Rays), specified as a logical value of true
or false
.
Data Types: logical
IntraClusterRays
— Generate intra-cluster raystrue
(default) | false
Generate intra-cluster rays, specified as a logical value of true
or false
.
Data Types: logical
OxygenAbsorption
— Power losses due to oxygen absorption0.015
(default) | nonnegative scalarPower 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 matrixTransmit 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
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 matrixReceive 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
To enable this property, set BeamformingMethod
to 'Custom'
.
Data Types: double
Complex Number Support: Yes
NormalizeImpulseResponses
— Normalize channel impulse responsestrue
(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 streamstrue
(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 to true
Regenerates intra-cluster rays when IntraClusterRays
is set to true
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 generator73
(default) | nonnegative integerInitial seed of random number generator, specified as a nonnegative integer.
To enable this property, set RandomStream
to 'mt19937ar with seed'
.
Data Types: double
returns
output signal y
= tgay(x
)y
by filtering input signal x
through the TGay fading channel defined by the wlanTGayChannel
System object
tgay
.
[
also returns the TGay channel impulse response, y
,CIR
] = tgay(x
)CIR
, of the
underlying fading process.
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)
wlanTGayChannel
info | Return characteristic information about TGay multipath fading channel |
showEnvironment | Display channel environment with D-Rays from ray tracing |
Note
reset
: If the RandomStream
property of the wlanTGayChannel
System object is set to 'Global stream'
, using reset
:
Regenerates R-Rays when RandomRays
is set to true
Regenerates intra-cluster rays when IntraClusterRays
is set to true
Regenerates the receive antenna array velocity when ReceiveArrayVelocitySource
is set to 'Auto'
Create a WLAN TGay channel System object™ and return its characteristic information.
Create a WLAN TGay multipath fading channel System object with default property values.
tgay = wlanTGayChannel;
Return and display the characteristic information of the TGay channel.
tgayInfo = info(tgay); disp(tgayInfo);
NumTxStreams: 1 NumRxStreams: 1 NumTxElements: 4 NumRxElements: 4 ChannelFilterDelay: 7 NumSamplesProcessed: 0
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');
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);
These diagrams show the Q-D algorithm and base steps for generating the channel impulse response. For more information, see Section 4 of [1].
[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.
Usage notes and limitations:
See System Objects in MATLAB Code Generation (MATLAB Coder).
You have a modified version of this example. Do you want to open this example with your edits?