Send signal through CDL channel model
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?.
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
)
cdl =
nrCDLChannel('DelayProfile','CDLD','DelaySpread',2e6)
creates the channel
object with CDLD delay profile and 2 microseconds delay spread.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.
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 seconds0.0
(default)  numeric scalar  row vectorDiscrete path delays in seconds, specified as a numeric scalar or row vector.
AveragePathGains
and PathDelays
must have the same
size.
To enable this property, set DelayProfile
to 'Custom'
.
Data Types: double
AveragePathGains
— Average path gains in dB0.0
(default)  numeric scalar  row vectorAverage 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.
To enable this property, set DelayProfile
to 'Custom'
.
Data Types: double
AnglesAoA
— Azimuth of arrival angle in degrees0.0
(default)  numeric scalar  row vectorAzimuth of arrival angle in degrees, specified as a numeric scalar or row vector. The vector elements specify the angles for each cluster.
To enable this property, set DelayProfile
to 'Custom'
.
Data Types: double
AnglesAoD
— Azimuth of departure angle in degrees0.0
(default)  numeric scalar  row vectorAzimuth of departure angle in degrees, specified as a numeric scalar or row vector. The vector elements specify the angles for each cluster.
To enable this property, set DelayProfile
to 'Custom'
.
Data Types: double
AnglesZoA
— Zenith of arrival angle in degrees0.0
(default)  numeric scalar  row vectorZenith of arrival angle in degrees, specified as a numeric scalar or row vector. The vector elements specify the angles for each cluster.
To enable this property, set DelayProfile
to 'Custom'
.
Data Types: double
AnglesZoD
— Zenith of departure angle in degrees0.0
(default)  numeric scalar  row vectorZenith of departure angle in degrees, specified as a numeric scalar or row vector. The vector elements specify the angles for each cluster.
To enable this property, set DelayProfile
to 'Custom'
.
Data Types: double
HasLOSCluster
— Line of sight cluster of the delay profilefalse
(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
.
To enable this property, set DelayProfile
to 'Custom'
.
Data Types: logical
KFactorFirstCluster
— Kfactor in first cluster of delay profile in dB13.3
(default)  numeric scalarKfactor 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.
To enable this property, set DelayProfile
to 'Custom'
and HasLOSCluster
to true
.
Data Types: double
AngleScaling
— Apply scaling of anglesfalse
(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.
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 vectorScaled 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
to true
and
DelayProfile
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.
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 vectorScaled 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}}$$).
To enable this property, set AngleScaling
to true
.
Data Types: double
XPR
— Crosspolarization power ratio in dB10.0
(default)  numeric scalarCrosspolarization power ratio in dB, specified as a numeric scalar. 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.
To enable this property, set DelayProfile
to 'Custom'
.
Data Types: double
DelaySpread
— Desired RMS delay spread in seconds30e9
(default)  numeric scalarDesired 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.
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 Hz4e9
(default)  numeric scalarCarrier frequency in Hz, specified as a numeric scalar.
Data Types: double
MaximumDopplerShift
— Maximum Doppler shift in Hz5
(default)  nonnegative numeric scalarMaximum 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 vectorUser 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 scalingfalse
(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.
To enable this property, set DelayProfile
to 'CDLD'
or
'CDLE'
.
Data Types: double
KFactor
— Desired Kfactor for scaling in dB9.0
(default)  numeric scalarDesired 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 is
K_{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.
To enable this property, set KFactorScaling
to true
.
Data Types: double
SampleRate
— Sample rate of input signal in Hz30.72e6
(default)  positive numeric scalarSample rate of input signal in Hz, specified as a positive numeric scalar.
Data Types: double
TransmitAntennaArray
— Transmit antenna array characteristicsTransmit 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. 
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 vectorMechanical 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 characteristicsReceive 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. 
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 wavelength64
(default)  Inf
 numeric scalarNumber 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 Plot Channel Transmission Properties with SISO and Delay Profile CDLB.
Data Types: double
NormalizePathGains
— Normalized channel fading processtrue
(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 seconds0.0
(default)  numeric scalarTime offset of fading process in seconds, specified as a numeric scalar.
Tunable: Yes
Data Types: double
NumStrongestClusters
— Number of strongest clusters to split into subclusters0
(default)  numeric scalarNumber of strongest clusters to split into subclusters, specified as a numeric scalar. See TR 38.901 Section 7.5, Step 11.
To enable this property, set DelayProfile
to 'Custom'
.
Data Types: double
ClusterDelaySpread
— Cluster delay spread in seconds3.90625e9
(default)  nonnegative scalarCluster 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.
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 random number stream, specified as one of the following:
'mt19937ar with seed'
— The object uses the mt19937ar
algorithm for normally distributed random number generation. Calling the
reset
function resets the filters
and reinitializes the random number stream to the value of the Seed
property.
'Global stream'
— The object uses the current global
random number stream for normally distributed random number generation. Calling
the reset
function resets only the
filters.
Seed
— Initial seed of mt19937ar random number stream73
(default)  nonnegative numeric scalarInitial seed of mt19937ar random number stream, specified as a nonnegative numeric scalar.
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
ChannelFiltering
— Fading channel filteringtrue
(default)  false
Fading channel filtering, specified as true
or
false
. When this property is set to false
, the
following 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 the SampleRate
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 samples30720
(default)  positive integerNumber of time samples, specified as a positive integer. Use this property to set the duration of the fading process realization.
Tunable: Yes
To enable this property, set ChannelFiltering
to false
.
Data Types: double
NormalizeChannelOutputs
— Normalize channel outputstrue
(default)  false
Normalize channel outputs, specified as true
or
false
. When this property is set to true
, the
channel outputs are normalized. 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
and
NumReceiveAntennas
NumInputSignals
and
NumOutputSignals
Hence the normalization is always by N_{R}.
To enable this property, set ChannelFiltering
to true
.
Data Types: logical
TransmitAndReceiveSwapped
— Reversed channel link directionfalse
(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 the swapTransmitAndReceive
function on the
nrCDLChannel
object reverses the link direction of the channel
and toggles this property value from false
to
true
.
true
— The role of the transmit and receive antennas
within the channel model are swapped. Calling the
swapTransmitAndReceive
function on the
nrCDLChannel
object restores the original link direction of
the channel and toggles this property value from true
to
false
.
Data Types: logical
[
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. In this case, the pathGains
,sampleTimes
] = cdl()NumTimeSamples
property determines the duration of the fading process. The object acts as a source of
the path gains and sample times without filtering an input signal. To use this syntax,
you must set the ChannelFiltering
property of cdl
to
false
.
signalIn
— Input signalInput 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 a phased.ReplicatedSubarray
(Phased Array System Toolbox) or phased.PartitionedArray
(Phased Array System Toolbox) phased array object). To determine the value of
N_{T}, check the NumInputSignals
structure field in the output of the
object function call.info
(cdl
)
Data Types: single
 double
Complex Number Support: Yes
signalOut
— Output signalOutput 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 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
)
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 processMIMO 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 of cdl
.
N_{P} is the number of paths,
specified by the size of the PathDelays
property of cdl
.
N_{T} is the
number of transmit antenna elements or the number of antenna subarrays (only when you specify
the TransmitAntennaArray
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_{T}, check the NumInputSignals
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 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
)
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 snapshotsSample 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
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)
nrCDLChannel
info  Get characteristic information about linklevel MIMO fading channel 
getPathFilters  Get path filter impulse response for linklevel MIMO fading channel 
displayChannel  Visualize and explore CDL channel model characteristics 
swapTransmitAndReceive  Reverse link direction in CDL channel model 
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 as a vector of the form [M N P Mg Ng] = [2 2 2 1 1], representing 1 panel (Mg=1, Ng=1) with a 2by2 antenna array (M=2, N=2) 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 2 2 1 1]; cdl.ReceiveAntennaArray.Size = [1 1 2 1 1];
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);
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 to Inf
, 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');
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)
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');
Orientation
field of antenna array properties will be removedWarns starting in R2021a
The Orientation
field of the TransmitAntennaArray
property will be removed in a future release. Use
the TransmitArrayOrientation
property instead.
The Orientation
field of the ReceiveAntennaArray
property will be removed in a future release. Use
the ReceiveArrayOrientation
property instead.
[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.
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?
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.
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: .
Select web siteYou can also select a web site from the following list:
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.