nrCDLChannel
Description
The nrCDLChannel
System object™ sends an input signal through a clustered delay line (CDL) multiinput
multioutput (MIMO) linklevel fading channel to obtain the channelimpaired signal. The
object implements the following aspects of TR 38.901 [1]:
Section 7.7.1: CDL models
Section 7.7.3: Scaling of delays
Section 7.7.5.1: Scaling of angles
Section 7.7.6: Kfactor for LOS channel models
To send a signal through the CDL MIMO channel model:
Create the
nrCDLChannel
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 CDL MIMO
channel System object.cdl
= nrCDLChannel
creates the object with properties set by using one or more namevalue pairs. Enclose
the property name inside quotes, followed by the specified value. Unspecified properties
take default values.cdl
= nrCDLChannel(Name,Value
)
Example: cdl =
nrCDLChannel('DelayProfile','CDLD','DelaySpread',2e6)
creates the channel
object with CDLD delay profile and 2microseconds delay spread.
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.
Configurable Channel Properties
DelayProfile
— CDL delay profile
'CDLA'
(default)  'CDLB'
 'CDLC'
 'CDLD'
 'CDLE'
 'Custom'
CDL delay profile, specified as 'CDLA'
,
'CDLB'
, 'CDLC'
, 'CDLD'
,
'CDLE'
, or 'Custom'
. See TR 38.901 Section
7.7.1, Tables 7.7.11 to 7.7.15.
When you set this property to 'Custom'
, configure the delay
profile using properties PathDelays
, AveragePathGains
, AnglesAoA
,
AnglesAoD
,
AnglesZoA
,
AnglesZoD
,
HasLOSCluster
, KFactorFirstCluster
, AngleSpreads
,
XPR
, and
NumStrongestClusters
.
Data Types: char
 string
PathDelays
— Discrete path delays in seconds
0.0
(default)  numeric scalar  row vector
Discrete path delays in seconds, specified as a numeric scalar or row vector.
AveragePathGains
and PathDelays
must have the same
size.
Dependencies
To enable this property, set DelayProfile
to 'Custom'
.
Data Types: double
AveragePathGains
— Average path gains in dB
0.0
(default)  numeric scalar  row vector
Average path gains in dB, also referred to as cluster powers in TR 38.901,
specified as a numeric scalar or row vector. AveragePathGains
and
PathDelays
must have the same size.
Dependencies
To enable this property, set DelayProfile
to 'Custom'
.
Data Types: double
AnglesAoA
— Azimuth of arrival angle in degrees
0.0
(default)  numeric scalar  row vector
Azimuth of arrival angle in degrees, specified as a numeric scalar or row vector. The vector elements specify the angles for each cluster.
Dependencies
To enable this property, set DelayProfile
to 'Custom'
.
Data Types: double
AnglesAoD
— Azimuth of departure angle in degrees
0.0
(default)  numeric scalar  row vector
Azimuth of departure angle in degrees, specified as a numeric scalar or row vector. The vector elements specify the angles for each cluster.
Dependencies
To enable this property, set DelayProfile
to 'Custom'
.
Data Types: double
AnglesZoA
— Zenith of arrival angle in degrees
0.0
(default)  numeric scalar  row vector
Zenith of arrival angle in degrees, specified as a numeric scalar or row vector. The vector elements specify the angles for each cluster.
Dependencies
To enable this property, set DelayProfile
to 'Custom'
.
Data Types: double
AnglesZoD
— Zenith of departure angle in degrees
0.0
(default)  numeric scalar  row vector
Zenith of departure angle in degrees, specified as a numeric scalar or row vector. The vector elements specify the angles for each cluster.
Dependencies
To enable this property, set DelayProfile
to 'Custom'
.
Data Types: double
HasLOSCluster
— Line of sight cluster of the delay profile
false
(default)  true
Line of sight (LOS) cluster of the delay profile, specified as
false
or true
. The PathDelays
,
AveragePathGains
, AnglesAoA
,
AnglesAoD
,
AnglesZoA
,
and AnglesZoD
properties define the delay profile. To enable the LOS cluster of the delay profile,
set HasLOSCluster
to true
.
Dependencies
To enable this property, set DelayProfile
to 'Custom'
.
Data Types: logical
KFactorFirstCluster
— Kfactor in first cluster of delay profile in dB
13.3
(default)  numeric scalar
Kfactor in the first cluster of the delay profile in dB, specified as a numeric scalar. The default value corresponds to the Kfactor in the first cluster of CDLD as defined in TR 38.901 Section 7.7.1, Table 7.7.14.
Dependencies
To enable this property, set DelayProfile
to 'Custom'
and HasLOSCluster
to true
.
Data Types: double
AngleScaling
— Apply scaling of angles
false
(default)  true
Apply scaling of angles, specified as false
or
true
according to TR 38.901 Section 7.7.5.1. When set to
true
, the AngleSpreads
and MeanAngles
properties define the scaling of angles.
Dependencies
To enable this property, set DelayProfile
to 'CDLA'
,
'CDLB'
, 'CDLC'
, 'CDLD'
,
or 'CDLE'
. This property does not apply for custom delay
profile.
Data Types: logical
AngleSpreads
— Scaled or clusterwise RMS angle spreads in degrees
[5.0 11.0 3.0 3.0]
(default)  fourelement row vector
Scaled or clusterwise root mean square (RMS) angle spreads in degrees, specified as a fourelement row vector in one of these forms:
[ASD ASA ZSD ZSA] — Use this vector to specify the desired RMS angle spreads of the channel, as described in TR 38.901 Section 7.7.5.1 (AS_{desired}), where:
ASD is the RMS azimuth spread of departure angles
ASA is the RMS azimuth spread of arrival angles
ZSD is the RMS zenith spread of departure angles
ZSA is the RMS zenith spread of arrival angles
To use this form, set
AngleScaling
totrue
andDelayProfile
to'CDLA'
,'CDLB'
,'CDLC'
,'CDLD'
, or'CDLE'
.[C_{ASD} C_{ASA} C_{ZSD} C_{ZSA}] — Use this vector to specify clusterwise RMS angle spreads for scaling ray offset angles within a cluster, as described in TR 38.901 Section 7.7.1, Step1, where:
C_{ASD} is the clusterwise RMS azimuth spread of departure angles
C_{ASA} is the clusterwise RMS azimuth spread of arrival angles
C_{ZSD} is the clusterwise RMS zenith spread of departure angles
C_{ZSA} is the clusterwise RMS zenith spread of arrival angles
To use this form, set
DelayProfile
to'Custom'
. Based on TR 38.901 Section 7.7.5.1, the object does not perform angle scaling in this case.
The default value corresponds to the default clusterwise angle spreads of CDLA as defined in TR 38.901 Section 7.7.1 Table 7.7.11.
Dependencies
To enable this property, set DelayProfile
to 'Custom'
or AngleScaling
to true
.
Data Types: double
MeanAngles
— Scaled mean angles in degrees
[0.0 0.0 0.0 0.0]
(default)  fourelement row vector
Scaled mean angles in degrees, specified as a fourelement row vector of the form [AoD AoA ZoD ZoA].
AoD is the mean azimuth of departure angles after scaling
AoA is the mean azimuth of arrival angles after scaling
ZoD is the mean zenith of departure angles after scaling
ZoA is the mean zenith of arrival angles after scaling
Use this vector to specify the desired mean angles of the channel used for angle scaling, as described in TR 38.901 Section 7.7.5.1 ($${\mu}_{\Phi ,\text{desired}}$$).
Dependencies
To enable this property, set AngleScaling
to true
.
Data Types: double
RayCoupling
— Coupling of departure and arrival rays within a cluster
'Random'
(default)  NbyMby3 numeric array
Coupling of departure and arrival rays within a cluster for azimuth and elevation, specified as one of these values.
'Random'
— The object randomly couples the rays, as defined in TR 38.901 Section 7.5 Step 8, using the random number stream specified by theRandomStream
property.NbyMby3 numeric array — Use this array to explicitly define the ray coupling. N is the number of clusters, equal to the number of path delays, specified by the
PathDelays
property. M is the number of rays per cluster, equal to 20. The three NbyM planes, in the third dimension, correspond to the AoD/AoA, ZoD/ZoA, and AoD/ZoD ray couplings, respectively. Each row in each NbyM plane specifies the ray coupling within the corresponding cluster by using a permutation of ray indices from 1 to M.Note
N is the number of clusters before any splitting into subclusters (see the
NumStrongestClusters
property).N does not count the LOS cluster that is specified by the
HasLOSCluster
property.
Dependencies
To enable this property, set DelayProfile
to 'Custom'
.
Data Types: double
 char
 string
XPR
— Crosspolarization power ratio in dB
10.0
(default)  numeric scalar  NbyM numeric matrix
Crosspolarization power ratio in dB, specified as a numeric scalar or an
NbyM numeric matrix. N is
the number of clusters, equal to the number of path delays, specified by the PathDelays
property. M is the number of rays per cluster, equal to 20. The
default value corresponds to the clusterwise crosspolarization power ratio of CDLA
as defined in TR 38.901 Section 7.7.1, Table 7.7.11.
Note
N is the number of clusters before any splitting into subclusters (see the
NumStrongestClusters
property).N does not count the LOS cluster that is specified by the
HasLOSCluster
property.
Dependencies
To enable this property, set DelayProfile
to 'Custom'
.
Data Types: double
InitialPhases
— Initial phases in degrees
'Random'
(default)  NbyMby4 numeric array
Initial phases of all rays for the four polarization combinations in degrees, specified as one of these values.
'Random'
— The object draws uniformly distributed random phases, as defined in TR 38.901 Section 7.5 Step 10, using the random number stream specified by theRandomStream
property.NbyMby4 numeric array — Use this option to explicitly define the initial phases. N is the number of clusters, equal to the number of path delays, specified by the
PathDelays
property. M is the number of rays per cluster, equal to 20. The four NbyM planes, in the third dimension, correspond to the θ/θ, θ/ϕ, ϕ/θ, ϕ/ϕ polarization combinations, respectively.Note
N is the number of clusters before any splitting into subclusters (see the
NumStrongestClusters
property).N does not count the LOS cluster that is specified by the
HasLOSCluster
property.
Dependencies
To enable this property, set DelayProfile
to 'Custom'
.
Data Types: double
 char
 string
DelaySpread
— Desired RMS delay spread in seconds
30e9
(default)  numeric scalar
Desired RMS delay spread in seconds, specified as a numeric scalar. For examples
of desired RMS delay spreads,
DS_{desired}
, see TR 38.901 Section
7.7.3 and Tables 7.7.31 and 7.7.32.
Dependencies
To enable this property, set DelayProfile
to 'CDLA'
,
'CDLB'
, 'CDLC'
, 'CDLD'
,
or 'CDLE'
. This property does not apply for custom delay
profile.
Data Types: double
CarrierFrequency
— Carrier frequency in Hz
4e9
(default)  numeric scalar
Carrier frequency in Hz, specified as a numeric scalar.
Data Types: double
MaximumDopplerShift
— Maximum Doppler shift in Hz
5
(default)  nonnegative numeric scalar
Maximum Doppler shift in Hz, specified as a nonnegative numeric scalar. This property applies to all channel paths. When the maximum Doppler shift is set to 0, the channel remains static for the entire input. To generate a new channel realization, reset the object by calling the reset
function.
Data Types: double
UTDirectionOfTravel
— User terminal direction of travel in degrees
[0; 90]
(default)  twoelement column vector
User terminal (or user equipment) direction of travel in degrees, specified as a twoelement column vector. The vector elements specify the azimuth and the zenith components [azimuth; zenith].
Data Types: double
KFactorScaling
— Kfactor scaling
false
(default)  true
Kfactor scaling, specified as false
or
true
. When set to true
, the KFactor
property specifies the desired Kfactor and the object applies
Kfactor scaling as described in TR 38.901 Section 7.7.6.
Note
Kfactor scaling modifies both the path delays and path powers.
Dependencies
To enable this property, set DelayProfile
to 'CDLD'
or
'CDLE'
.
Data Types: double
KFactor
— Desired Kfactor for scaling in dB
9.0
(default)  numeric scalar
Desired Kfactor for scaling in dB, specified as a numeric scalar. For typical Kfactor values, see TR 38.901 Section 7.7.6 and Table 7.56.
Note
Kfactor scaling modifies both the path delays and path powers.
Kfactor
applies to the overall delay profile. Specifically, the Kfactor before the scaling isK_{model}
, as described in TR 38.901 Section 7.7.6.K_{model}
is the ratio of the power of the first path LOS to the total power of all the Laplacian clusters, including the Laplacian part of the first cluster.
Dependencies
To enable this property, set KFactorScaling
to true
.
Data Types: double
SampleRate
— Sample rate of input signal in Hz
30720000
(default)  positive numeric scalar
Sample rate of the input signal in Hz, specified as a positive numeric scalar.
Data Types: double
TransmitAntennaArray
— Transmit antenna array characteristics
structure (default)  phased array
Transmit antenna array characteristics, specified as a structure or a phased array (requires Phased Array System Toolbox™).
Phased arrays enable you to
specify different antenna array configurations, including predefined and custom antenna
elements. You can design custom antenna elements by using Phased Array System Toolbox or Antenna Toolbox™ features. To specify custom antenna elements in a 5G rectangular multipanel array,
as defined in TR 38.901 Section 7.3, use the phased.NRRectangularPanelArray
(Phased Array System Toolbox) object. For an overview of phased arrays, see Array Geometries and Analysis (Phased Array System Toolbox).
When specified as a structure, this property contains these fields:
Parameter Field  Values  Description 

Size 
row vector 
Size of antenna array [M N P M_{g} N_{g}], where:
The For example, this figure shows how the object maps the
input signal 
ElementSpacing 
row vector 
Element spacing, in wavelengths, specified as a row vector of the form [λ_{v} λ_{h} dg_{v} dg_{h}]. The vector elements represent the vertical and horizontal element spacing and the vertical and horizontal panel spacing, respectively. The panel spacing is measured from the center of the panels. 
PolarizationAngles 
row vector 
Polarization angles in degrees, specified as a row vector of the form [θ ρ]. 
Orientation (to be
removed) 
column vector 
Note This field will be removed in a future release. Use the Mechanical orientation of the array, in degrees, specified as a column vector of the form [α; β; γ]. The vector elements specify the bearing, downtilt, and slant, respectively. The default value indicates that the broadside direction of the array points to the positive xaxis. 
Element 

Antenna element radiation pattern as described in TR 38.901 Section 7.3. (Note that TR 38.901 superseded TR 38.900.) 
PolarizationModel 

Model that determines the radiation field patterns based on a defined radiation power pattern. For more information, see TR 38.901 Section 7.3.2. 
TransmitArrayOrientation
— Mechanical orientation of transmit antenna array
[0; 0; 0]
(default)  threeelement numeric column vector
Mechanical orientation of the transmit antenna array, specified as a threeelement
numeric column vector of the form [α; β;
γ]. The vector elements specify the bearing, downtilt, and slant
rotation angles in degrees, respectively, as specified in TR 38.901 Section 7.1.3. The
object applies these rotation angles relative to the default array orientation in the
local coordinate system. The default array orientation, corresponding to the value
[0; 0; 0]
, depends on the TransmitAntennaArray
property.
If you specify the
TransmitAntennaArray
property as a structure (default), in the default array orientation, the broadside direction points to the positive xaxis.If you specify the
TransmitAntennaArray
property as a phased array (requires Phased Array System Toolbox), you can configure the default array orientation by setting the relevant array properties of the specified phased array object.
To visualize and evaluate the resulting array orientation, call the
displayChannel
function on
the nrCDLChannel
channel model.
For an example of orienting transmit and receive antennas towards each other, see Orient Transmit and Receive Antennas Using LOS Path Angles.
Data Types: double
ReceiveAntennaArray
— Receive antenna array characteristics
structure (default)  phased array
Receive antenna array characteristics, specified as a structure or a phased array (requires Phased Array System Toolbox).
Phased arrays enable you to
specify different antenna array configurations, including predefined and custom antenna
elements. You can design custom antenna elements by using Phased Array System Toolbox or Antenna Toolbox features. To specify custom antenna elements in a 5G rectangular multipanel array,
as defined in TR 38.901 Section 7.3, use the phased.NRRectangularPanelArray
(Phased Array System Toolbox) object. For an overview of phased arrays, see Array Geometries and Analysis (Phased Array System Toolbox).
When specified as a structure, this property contains these fields:
Parameter Field  Values  Description 

Size 
row vector 
Size of antenna array [M N P M_{g} N_{g}], where:
The For example, this figure shows how the object maps an
antenna array of size 
ElementSpacing 
row vector 
Element spacing, in wavelengths, specified as a row vector of the form [λ_{v} λ_{h} dg_{v} dg_{h}]. The vector elements represent the vertical and horizontal element spacing and the vertical and horizontal panel spacing, respectively. The panel spacing is measured from the center of the panels. 
PolarizationAngles 
row vector 
Polarization angles in degrees, specified as a row vector of the form [θ ρ]. 
Orientation (to be
removed) 
column vector 
Note This field will be removed in a future release. Use the Mechanical orientation of the array, in degrees, specified as a column vector of the form [α; β; γ]. The vector elements specify the bearing, downtilt, and slant, respectively. The default value indicates that the broadside direction of the array points to the positive xaxis. 
Element 

Antenna element radiation pattern as described in TR 38.901 Section 7.3. (Note that TR 38.901 superseded TR 38.900.) 
PolarizationModel 

Model that determines the radiation field patterns based on a defined radiation power pattern. For more information, see TR 38.901 Section 7.3.2. 
ReceiveArrayOrientation
— Mechanical orientation of receive antenna array
[0; 0; 0]
(default)  threeelement numeric column vector
Mechanical orientation of the receive antenna array, specified as a threeelement
numeric column vector of the form [α; β;
γ]. The vector elements specify the bearing, downtilt, and slant
rotation angles in degrees, respectively, as specified in TR 38.901 Section 7.1.3. The
object applies these rotation angles relative to the default array orientation in the
local coordinate system. The default array orientation, corresponding to the value
[0; 0; 0]
, depends on the ReceiveAntennaArray
property.
If you specify the
ReceiveAntennaArray
property as a structure (default), in the default array orientation, the broadside direction points to the positive xaxis.If you specify the
ReceiveAntennaArray
property as a phased array (requires Phased Array System Toolbox), you can configure the default array orientation by setting the relevant array properties of the specified phased array object.
To visualize and evaluate the resulting array orientation, call the
displayChannel
function on
the nrCDLChannel
channel model.
For an example of orienting transmit and receive antennas towards each other, see Orient Transmit and Receive Antennas Using LOS Path Angles.
Data Types: double
SampleDensity
— Number of time samples per half wavelength
64
(default)  Inf
 numeric scalar
Number of time samples per half wavelength, specified as Inf
or
a numeric scalar. The SampleDensity
and MaximumDopplerShift
properties control the coefficient generation
sampling rate, Fcg, given by
Fcg = MaximumDopplerShift
× 2 ×
SampleDensity
.
Setting SampleDensity
to Inf
assigns
Fcg the value of the SampleRate
property.
For an example of how sample density affects the channel output and path gains, see Explore the Effect of SampleDensity Property in CDL Channel Output.
Data Types: double
NormalizePathGains
— Normalized channel fading process
true
(default)  false
Normalized channel fading process, specified as true
or
false
. When this property is set to true
, the
amplitude of the channel fading process is normalized by the average path gains (also
referred to as cluster powers in TR 38.901). This normalization does not include other
channel gains, for example, polarization and antenna element directivity. When this
property is set to false
, the channel fading process is not
normalized. The DelayProfile
property determines the average path gains, based on TR
38.901 Section 7.7.1, Tables 7.7.11 to 7.7.15. When you set DelayProfile
to 'Custom'
, you can specify the average
path gains with the AveragePathGains
property.
Data Types: logical
InitialTime
— Time offset of fading process in seconds
0.0
(default)  numeric scalar
Time offset of fading process in seconds, specified as a numeric scalar.
Tunable: Yes
Data Types: double
NumStrongestClusters
— Number of strongest clusters to split into subclusters
0
(default)  numeric scalar
Number of strongest clusters to split into subclusters, specified as a numeric scalar. See TR 38.901 Section 7.5, Step 11.
Dependencies
To enable this property, set DelayProfile
to 'Custom'
.
Data Types: double
ClusterDelaySpread
— Cluster delay spread in seconds
3.90625e9
(default)  nonnegative scalar
Cluster delay spread in seconds, specified as a nonnegative scalar. Use this property to specify the delay offset between subclusters for clusters split into subclusters. See TR 38.901 Section 7.5, Step 11.
Dependencies
To enable this property, set DelayProfile
to 'Custom'
and NumStrongestClusters
to a value greater than zero.
Data Types: double
RandomStream
— Source of random number stream
'mt19937ar with seed'
(default)  'Global stream'
Source of the random number stream to initialize the ray phases and coupling using uniformly distributed random numbers, specified as one of these values.
'mt19937ar with seed'
— The object uses the mt19937ar algorithm for the random number generation. Calling thereset
function resets the filters and reinitializes the random number stream to the value of theSeed
property. Specifying this value results in repeatable channel fading.'Global stream'
— The object uses the current global random number stream for the random number generation. Calling thereset
function resets only the filters.
Dependencies
To enable this property, set the RayCoupling
or InitialPhases
properties to 'Random'
.
Seed
— Initial seed of mt19937ar random number stream
73
(default)  nonnegative numeric scalar
Initial seed of mt19937ar random number stream, specified as a nonnegative numeric scalar.
Dependencies
To enable this property, set RandomStream to 'mt19937ar with seed'
. When calling
the reset
function, the seed
reinitializes the mt19937ar random number stream.
Data Types: double
NormalizeChannelOutputs
— Normalize channel outputs
true
(default)  false
Normalize channel outputs, specified as true
or
false
. When this property is set to true
, the
channel output signal is divided by the squareroot of the number of receive antennas.
The normalization is by N_{R}, where
N_{R} is the
number of receive antenna elements or the number of antenna subarrays (only when you specify the
ReceiveAntennaArray
property as a phased.ReplicatedSubarray
(Phased Array System Toolbox) or phased.PartitionedArray
(Phased Array System Toolbox) phased array object). To determine the value of
N_{R}, check the NumOutputSignals
structure field in the output of the
object function call.info
(cdl
)
Note
When you call the swapTransmitAndReceive
function to reverse the role of the transmit
and receive antennas within the channel, the function also swaps these output
structure fields of the
function call:info
(cdl
)
NumTransmitAntennas
andNumReceiveAntennas
NumInputSignals
andNumOutputSignals
Hence the normalization is always by N_{R}.
Dependencies
To enable this property, set ChannelFiltering
to true
.
Data Types: logical
ChannelFiltering
— Fading channel filtering
true
(default)  false
Fading channel filtering, specified as true
or
false
. When this property is set to false
,
these conditions apply.
The object takes no input signal and returns only the path gains and sample times.
The
SampleDensity
property determines when to sample the channel coefficients.The
NumTimeSamples
property controls the duration of the fading process realization at a sampling rate given by theSampleRate
property.
For a use case of disabling channel filtering, see the CDL Channel Model Customization with Ray Tracing example.
Data Types: logical
NumTimeSamples
— Number of time samples
30720
(default)  positive integer
Number of time samples, specified as a positive integer. Use this property to set the duration of the fading process realization.
Tunable: Yes
Dependencies
To enable this property, set ChannelFiltering
to false
.
Data Types: double
OutputDataType
— Data type of generated path gains
'double'
(default)  'single'
Data type of generated path gains, specified as 'double'
or
'single'
.
Dependencies
To enable this property, set ChannelFiltering
to false
.
Data Types: double
Nonconfigurable Channel Properties
TransmitAndReceiveSwapped
— Reversed channel link direction
false
(default)  true
This property is readonly.
Reversed channel link direction, returned as one of these values.
false
— The role of the transmit and receive antennas within the channel model corresponds to the original channel link direction. Calling theswapTransmitAndReceive
function on thenrCDLChannel
object reverses the link direction of the channel and toggles this property value fromfalse
totrue
.true
— The role of the transmit and receive antennas within the channel model are swapped. Calling theswapTransmitAndReceive
function on thenrCDLChannel
object restores the original link direction of the channel and toggles this property value fromtrue
tofalse
.
Data Types: logical
Usage
Syntax
Description
[
also returns the sample times of the channel snapshots of signalOut
,pathGains
,sampleTimes
] = cdl(signalIn
)pathGains
(firstdimension elements).
[
returns only the path gains and the sample times. The pathGains
,sampleTimes
] = cdl()cdl
object acts
as a source of the path gains and sample times without filtering an input signal. The
NumTimeSamples
object property specifies the duration of the fading process and the OutputDataType
object property specifies the data type of the generated
path gains. To use this syntax, you must set the ChannelFiltering
object property to false
.
Input Arguments
signalIn
— Input signal
complex scalar  column vector  N_{S}byN_{T}
matrix
Input signal, specified as a complex scalar, column vector, or N_{S}byN_{T} matrix, where:
N_{S} is the number of samples.
N_{T} is the number of transmit antenna elements or the number of antenna subarrays (only when you specify the
TransmitAntennaArray
property as aphased.ReplicatedSubarray
(Phased Array System Toolbox) orphased.PartitionedArray
(Phased Array System Toolbox) phased array object). To determine the value of N_{T}, check theNumInputSignals
structure field in the output of the
object function call.info
(cdl
)
Data Types: single
 double
Complex Number Support: Yes
Output Arguments
signalOut
— Output signal
complex scalar  vector  N_{S}byN_{R}
matrix
Output signal, returned as a complex scalar, vector, or N_{S}byN_{R} matrix, where:
N_{S} is the number of samples.
N_{R} is the number of receive antenna elements or the number of antenna subarrays (only when you specify the
ReceiveAntennaArray
property as aphased.ReplicatedSubarray
(Phased Array System Toolbox) orphased.PartitionedArray
(Phased Array System Toolbox) phased array object). To determine the value of N_{R}, check theNumOutputSignals
structure field in the output of the
object function call.info
(cdl
)
The output signal data type is of the same precision as the input signal data type.
Data Types: single
 double
Complex Number Support: Yes
pathGains
— MIMO channel path gains of fading process
N_{CS}byN_{P}byN_{T}byN_{R}
complex array
MIMO channel path gains of the fading process, returned as an N_{CS}byN_{P}byN_{T}byN_{R} complex array, where:
N_{CS} is the number of channel snapshots, controlled by the
SampleDensity
property ofcdl
.N_{P} is the number of paths, specified by the size of the
PathDelays
property ofcdl
.N_{T} is the number of transmit antenna elements or the number of antenna subarrays (only when you specify the
TransmitAntennaArray
property as aphased.ReplicatedSubarray
(Phased Array System Toolbox) orphased.PartitionedArray
(Phased Array System Toolbox) phased array object). To determine the value of N_{T}, check theNumInputSignals
structure field in the output of the
object function call.info
(cdl
)N_{R} is the number of receive antenna elements or the number of antenna subarrays (only when you specify the
ReceiveAntennaArray
property as aphased.ReplicatedSubarray
(Phased Array System Toolbox) orphased.PartitionedArray
(Phased Array System Toolbox) phased array object). To determine the value of N_{R}, check theNumOutputSignals
structure field in the output of the
object function call.info
(cdl
)
The path gains data type is of the same precision as the input signal data type.
Data Types: single
 double
Complex Number Support: Yes
sampleTimes
— Sample times of channel snapshots
N_{CS}by1 column vector
Sample times of channel snapshots, returned as an
N_{CS}by1 column vector, where
N_{CS} is the number of channel snapshots
controlled by the SampleDensity
property.
Data Types: double
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 nrCDLChannel
info  Characteristic information of linklevel MIMO channel 
getPathFilters  Get path filter impulse response for linklevel MIMO channel 
displayChannel  Visualize and explore CDL channel model characteristics 
swapTransmitAndReceive  Reverse link direction in CDL channel model 
Examples
Transmission Over Channel Model with Delay Profile CDLD
Transmit waveform through a clustered delay line (CDL) channel model with delay profile CDLD from TR 38.901 Section 7.7.1.
Define the channel configuration structure using an nrCDLChannel
System object. Use delay profile CDLD, a delay spread of 10 ns, and UE velocity of 15 km/h:
v = 15.0; % UE velocity in km/h fc = 4e9; % carrier frequency in Hz c = physconst('lightspeed'); % speed of light in m/s fd = (v*1000/3600)/c*fc; % UE max Doppler frequency in Hz cdl = nrCDLChannel; cdl.DelayProfile = 'CDLD'; cdl.DelaySpread = 10e9; cdl.CarrierFrequency = fc; cdl.MaximumDopplerShift = fd;
Configure the transmit array layout as a vector of the form [M N P Mg Ng] = [2 4 2 1 2], representing 2 panels (Mg=1, Ng=2) with a 2by4 antenna array (M=2, N=4) and two polarization angles (P=2). Configure the receive antenna array as a vector of the form [M N P Mg Ng] = [1 1 2 1 1], representing a single pair of crosspolarized colocated antennas.
cdl.TransmitAntennaArray.Size = [2 4 2 1 2]; cdl.ReceiveAntennaArray.Size = [1 1 2 1 1];
Set the distance between the transmit antenna elements to half wavelength. Specify the distance between the antenna panel centers to evenly distribute the antenna elements of all panels and avoid panel overlapping.
cdl.TransmitAntennaArray.ElementSpacing(1:2) = 0.5; cdl.TransmitAntennaArray.ElementSpacing(3:4) = cdl.TransmitAntennaArray.ElementSpacing(1:2).*(cdl.TransmitAntennaArray.Size(1:2));
Verify the configuration by displaying the channel.
displayChannel(cdl,'LinkEnd','Tx')
displayChannel(cdl,'LinkEnd','Rx')
Create a random waveform of 1 subframe duration with 8 antennas.
SR = 15.36e6; T = SR * 1e3; cdl.SampleRate = SR; cdlinfo = info(cdl); Nt = cdlinfo.NumInputSignals; txWaveform = complex(randn(T,Nt),randn(T,Nt));
Transmit the input waveform through the channel.
rxWaveform = cdl(txWaveform);
Explore the Effect of SampleDensity
Property in CDL Channel Output
Plot channel output and path gain snapshots for various sample density values while using an nrCDLChannel
System object.
Configure a channel with delay profile CDLB from TR 38.901 Section 7.7.1. Set the maximum Doppler shift to 300 Hz and the channel sampling rate to 10 kHz.
cdl = nrCDLChannel;
cdl.DelayProfile = 'CDLB';
cdl.MaximumDopplerShift = 300.0;
cdl.SampleRate = 10e3;
cdl.Seed = 19;
Configure the transmit and receive antenna arrays for singleinput/singleoutput (SISO) operation.
cdl.TransmitAntennaArray.Size = [1 1 1 1 1]; cdl.ReceiveAntennaArray.Size = [1 1 1 1 1];
Create an input waveform with a length of 40 samples.
T = 40; in = ones(T,1);
Plot the step response of the channel (displayed as lines) and the corresponding path gain snapshots (displayed circles) for various values of the SampleDensity
property. The sample density property controls how often the channel snapshots are taken relative to the Doppler frequency.
When
SampleDensity
is set toInf
, a channel snapshot is taken for every input sample.When
SampleDensity
is set to a scalar S, a channel snapshot is taken at a rate of ${\mathit{F}}_{\mathrm{CS}}=2\mathit{S}\times \mathit{MaximumDopplerShift}$.
The nrCDLChannel
object applies the channel snapshots to the input waveform by means of zeroorder hold interpolation. The object takes an extra snapshot beyond the end of the input. Some of the final output samples use this extra value to minimize the interpolation error. The channel output contains a transient (and a delay) due to the filters that implement the path delays.
s = [Inf 5 2]; % sample densities legends = {}; figure; hold on; SR = cdl.SampleRate; for i = 1:length(s) % call channel with chosen sample density release(cdl); cdl.SampleDensity = s(i); [out,pathgains,sampletimes] = cdl(in); chInfo = info(cdl); tau = chInfo.ChannelFilterDelay; % plot channel output against time t = cdl.InitialTime + ((0:(T1))  tau).' / SR; h = plot(t,abs(out),'o'); h.MarkerSize = 2; h.LineWidth = 1.5; desc = ['Sample Density = ' num2str(s(i))]; legends = [legends ['Output, ' desc]]; disp([desc ', Ncs = ' num2str(length(sampletimes))]); % plot path gains against sample times h2 = plot(sampletimestau/SR,abs(sum(pathgains,2)),'o'); h2.Color = h.Color; h2.MarkerFaceColor = h.Color; legends = [legends ['Path Gains, ' desc]]; end
Sample Density = Inf, Ncs = 40 Sample Density = 5, Ncs = 13 Sample Density = 2, Ncs = 6
xlabel('Time (s)'); title('Channel Output and Path Gains vs. Sample Density'); ylabel('Channel Magnitude'); legend(legends,'Location','NorthWest');
Orient Transmit and Receive Antennas Using LOS Path Angles
Create a CDL channel model. Then specify a lightofsight (LOS) channel.
cdl = nrCDLChannel; cdl.DelayProfile = 'CDLD'; % LOS channel cdl.TransmitAntennaArray.Element = '38.901'; cdl.ReceiveAntennaArray.Element = '38.901';
Retrieve channel characteristic information. Orient the transmit and receive antenna arrays to point at each other by using the LOS path angles returned in the characteristic information.
cdlInfo = cdl.info; cdl.TransmitArrayOrientation = [cdlInfo.AnglesAoD(1) cdlInfo.AnglesZoD(1)90 0]'; cdl.ReceiveArrayOrientation = [cdlInfo.AnglesAoA(1) cdlInfo.AnglesZoA(1)90 0]';
Visualize the channel characteristics at the transmitter end.
cdl.displayChannel('LinkEnd','Tx'); view(0,90)
Visualize the channel characteristics at the receiver end. The strongest path (LOS) passes through the maximum of the antenna element radiation pattern, which confirms that the antennas point at each other.
cdl.displayChannel('LinkEnd','Rx') view(0,90)
Configure CDL Channel Antenna Using Phased Array
Create a CDL channel model. Then specify a phased array for the transmit antenna array.
cdl = nrCDLChannel; cdl.TransmitAntennaArray = phased.URA;
Specify a crossdipole transmit antenna array element to generate circularly polarized fields.
cdl.TransmitAntennaArray.Element = phased.CrossedDipoleAntennaElement;
Set the broadside direction of the array toward the positive yaxis. Add a 30 degree downtilt.
cdl.TransmitAntennaArray.ArrayNormal = 'y';
cdl.TransmitArrayOrientation = [0; 30; 0];
Set the antenna element spacing to half wavelength.
lambda = physconst('lightspeed')/cdl.CarrierFrequency;
cdl.TransmitAntennaArray.ElementSpacing = [lambda/2 lambda/2];
Visualize the channel characteristics at the transmitter end.
cdl.displayChannel('LinkEnd','Tx');
References
[1] 3GPP TR 38.901. “Study on channel model for frequencies from 0.5 to 100 GHz.” 3rd Generation Partnership Project; Technical Specification Group Radio Access Network.
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 R2018bR2021a: Orientation
field of antenna array properties will be removed
The
Orientation
field of theTransmitAntennaArray
property will be removed in a future release. Use theTransmitArrayOrientation
property instead.The
Orientation
field of theReceiveAntennaArray
property will be removed in a future release. Use theReceiveArrayOrientation
property instead.
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)