nrTDLChannel
Model TDL MIMO channel model
Description
The nrTDLChannel
System object™ models a tapped delay line (TDL) multi-input multi-output (MIMO) link-level
fading channel. The object implements the TDL models in TR 38.811 Section 6.9.2 [1] and the following aspects of
TR 38.901 [2]:
Section 7.7.2: TDL models
Section 7.7.3: Scaling of delays
Section 7.7.5.2 TDL extension: Applying a correlation matrix
Section 7.7.6: K-factor for LOS channel models
The object enables TDL channel filtering by default. When TDL channel filtering is enabled, you can send an input signal through the channel to obtain the channel-impaired signal. The default object also returns the path gains of the fading process and sample times of the channel snapshots.
The object also enables you to obtain the OFDM
channel response and timing offset when you set the ChannelResponseOutput
property to 'ofdm-response'
. In this
case, the object takes a carrier input, in addition to the input signal, and returns the OFDM
channel response and timing offset instead of the path gains and sample times, as shown in
this figure. (since R2024b)
To obtain channel characteristics without sending a signal through the
channel, set the ChannelFiltering
property to false
.
For an overview of how the object properties configure TDL channel filtering and channel coefficients generation, see Internal Architecture of TDL Channel Model.
To use the TDL MIMO channel model:
Create the
nrTDLChannel
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 TDL MIMO
channel System object.tdl
= nrTDLChannel
creates the object with properties set by using one or more name-value pairs. Enclose
the property name inside quotes, followed by the specified value. Unspecified properties
take default values.tdl
= nrTDLChannel(Name,Value
)
Example: tdl =
nrTDLChannel('DelayProfile','TDL-D','DelaySpread',2e-6)
creates a TDL
channel model with TDL-D delay profile and a 2-microseconds 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.
Delay Profile Selection
The delay profile selection determines which delay profile configuration properties are applicable to the channel.
DelayProfile
— TDL delay profile
'TDL-A'
(default) | 'TDL-B'
| 'TDL-C'
| 'TDL-D'
| 'TDL-E'
| 'TDLA30'
| 'TDLB100'
| 'TDLC300'
| 'TDLC60'
| 'TDLD30'
| 'TDLA10'
| 'TDLD10'
| 'NTN-TDL-A'
| 'NTN-TDL-B'
| 'NTN-TDL-C'
| 'NTN-TDL-D'
| 'NTN-TDLA100'
| 'NTN-TDLC5'
| 'Custom'
TDL delay profile, specified as one of these values.
'TDL-A'
,'TDL-B'
,'TDL-C'
,'TDL-D'
, or'TDL-E'
— These values correspond to the delay profiles defined in TR 38.901 Section 7.7.2, Tables 7.7.2-1 to 7.7.2-5.'TDLA30'
,'TDLB100'
,'TDLC300'
, or'TDLC60'
— These values correspond to the simplified delay profiles defined in TS 38.101-4 Annex B.2.1 and TS 38.104 Annex G.2.1.'TDLD30'
,'TDLA10'
, or'TDLD10'
— These values correspond to the delay profiles defined in Release 17 of TS 38.101-4 Annexes B.2.1.1 and B.2.1.2. (since R2024a)'NTN-TDL-A'
,'NTN-TDL-B'
,'NTN-TDL-C'
, or'NTN-TDL-D'
— These values correspond to the nonterrestrial network (NTN) delay profiles defined in TR 38.811 Section 6.9.2, Tables 6.9.2-1 to 6.9.2-4. (since R2024a)'NTN-TDLA100'
and'NTN-TDLC5'
— These values correspond to the simplified NTN delay profiles defined in TS 38.101-5 Annex B. (since R2024a)'Custom'
— Configure the delay profile using thePathDelays
,AveragePathGains
,FadingDistribution
, andKFactorFirstTap
properties.
Data Types: char
| string
Predefined Delay Profile
These properties configure channel parameters that are specific to predefined channel
profiles, that is, when you set DelayProfile
to a value other than 'Custom'
.
DelaySpread
— Desired RMS delay spread in seconds
30e-9
(default) | numeric scalar
Desired root mean square (RMS) delay spread in seconds, specified as a numeric
scalar. For examples of desired RMS delay spreads,
DSdesired
, see TR 38.901 Section
7.7.3 Tables 7.7.3-1 and 7.7.3-2.
Dependencies
To enable this property, set DelayProfile
to 'TDL-A'
,
'TDL-B'
, 'TDL-C'
, 'TDL-D'
,
'TDL-E'
, 'NTN-TDL-A'
,
'NTN-TDL-B'
, 'NTN-TDL-C'
, or
'NTN-TDL-D'
.
Data Types: double
KFactorScaling
— K-factor scaling
false
(default) | true
K-factor scaling, specified as false
or
true
. When set to true
, the KFactor
property specifies the desired K-factor, and the object applies K-factor scaling as
described in TR 38.901 Section 7.7.6.
Note
K-factor scaling modifies both the path delays and path powers.
Dependencies
To enable this property, set DelayProfile
to 'TDL-D'
,
'TDL-E'
, 'NTN-TDL-C'
, or
'NTN-TDL-D'
.
Data Types: double
KFactor
— Desired K-factor for scaling in dB
9.0
(default) | numeric scalar
Desired K-factor for scaling in dB, specified as a numeric scalar. For typical K-factor values, see TR 38.901 Section 7.7.6 and Table 7.5-6.
Note
K-factor scaling modifies both the path delays and path powers.
K-factor
applies to the overall delay profile. Specifically, the K-factor after the scaling isKmodel
as described in TR 38.901 Section 7.7.6.Kmodel
is the ratio of the power of the first path LOS to the total power of all the Rayleigh paths, including the Rayleigh part of the first path.
Dependencies
To enable this property, set KFactorScaling
to true
.
Data Types: double
Custom Delay Profile
These properties configure channel parameters that are specific to predefined channel
profiles, that is, when you set DelayProfile
to 'Custom'
.
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, 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
FadingDistribution
— Fading process statistical distribution
'Rayleigh'
(default) | 'Rician'
Fading process statistical distribution, specified as
'Rayleigh'
or 'Rician'
.
Dependencies
To enable this property, set DelayProfile
to 'Custom'
.
Data Types: char
| string
KFactorFirstTap
— K-factor of first tap of delay profile in dB
13.3
(default) | numeric scalar
K-factor of first tap of delay profile in dB, specified as a numerical scalar. The default value corresponds to the K-factor of the first tap of TDL-D as defined in TR 38.901 Section 7.7.2, Table 7.7.2-4.
Dependencies
To enable this property, set DelayProfile
to 'Custom'
and FadingDistribution
to 'Rician'
.
Data Types: double
Antenna Array
These properties configure the MIMO correlation aspects of the channel.
MIMOCorrelation
— Correlation between UE and BS antennas
'Low'
(default) | 'Medium'
| 'Medium-A'
| 'UplinkMedium'
| 'High'
| 'Custom'
Correlation between user equipment (UE) and base station (BS) antennas, specified as one of these values:
'Low'
or'High'
— Applies to both uplink and downlink.'Low'
is equivalent to no correlation between antennas.'Medium'
or'Medium-A'
— For downlink, see TS 36.101 Annex B.2.3.2. For uplink, see TS 36.104 Annex B.5.2. TheTransmissionDirection
property controls the transmission direction.'UplinkMedium'
— See TS 36.104, Annex B.5.2.'Custom'
— TheReceiveCorrelationMatrix
property specifies the correlation between UE antennas, and theTransmitCorrelationMatrix
property specifies the correlation between BS antennas. See TR 38.901 Section 7.7.5.2.
For more details on correlation between UE and BS antennas, see TS 36.101 [3] and TS 36.104 [4].
Data Types: char
| string
Polarization
— Antenna polarization arrangement
'Co-Polar'
(default) | 'Cross-Polar'
| 'Custom'
Antenna polarization arrangement, specified as 'Co-Polar'
,
'Cross-Polar'
, 'Custom'
.
Data Types: char
| string
TransmissionDirection
— Transmission direction
'Downlink'
(default) | 'Uplink'
Transmission direction, specified as 'Downlink'
or
'Uplink'
.
Dependencies
To enable this property, set MIMOCorrelation
to 'Low'
,
'Medium'
, 'Medium-A'
,
'UplinkMedium'
, or 'High'
.
Note
This property describes the transmission direction corresponding to the
channel status in which the role of the transmit and receive antennas are not
swapped. If the antennas are swapped, the opposite transmission direction applies
to this property. To determine the current link direction of the channel, inspect
the TransmitAndReceiveSwapped
property value.
Data Types: char
| string
NumTransmitAntennas
— Number of transmit antennas
1
(default) | positive integer
Number of transmit antennas, specified as a positive integer.
Dependencies
To enable this property, set MIMOCorrelation
to 'Low'
,
'Medium'
, 'Medium-A'
,
'UplinkMedium'
, or 'High'
, or set both
MIMOCorrelation
and Polarization
to 'Custom'
.
Data Types: double
NumReceiveAntennas
— Number of receive antennas
2 (default) | positive integer
Number of receive antennas, specified as a positive integer.
Dependencies
To enable this property, set MIMOCorrelation
to 'Low'
,
'Medium'
, 'Medium-A'
,
'UplinkMedium'
, or 'High'
.
Data Types: double
TransmitCorrelationMatrix
— Spatial correlation of transmitter
[1]
(default) | 2-D matrix | 3-D array
Spatial correlation of transmitter, specified as a 2-D matrix or 3-D array.
If the channel is frequency-flat (
PathDelays
is a scalar), specifyTransmitCorrelationMatrix
as a 2-D Hermitian matrix of size NT-by-NT. NT is the number of transmit antennas. The main diagonal elements must be all ones, and the off-diagonal elements must have a magnitude smaller than or equal to one.If the channel is frequency-selective (
PathDelays
is a row vector of length NP), specifyTransmitCorrelationMatrix
as one of these arrays:2-D Hermitian matrix of size NT-by-NT with element properties as previously described. Each path has the same transmit correlation matrix.
3-D array of size NT-by-NT-by-NP, where each submatrix of size NT-by-NT is a Hermitian matrix with element properties as previously described. Each path has its own transmit correlation matrix.
Dependencies
To enable this property, set MIMOCorrelation
to 'Custom'
and Polarization
to either 'Co-Polar'
or
'Cross-Polar'
.
Data Types: double
Complex Number Support: Yes
ReceiveCorrelationMatrix
— Spatial correlation of receiver
[1 0; 0 1]
(default) | 2-D matrix | 3-D array
Spatial correlation of receiver, specified as a 2-D matrix or 3-D array.
If the channel is frequency-flat (
PathDelays
is a scalar), specifyReceiveCorrelationMatrix
as a 2-D Hermitian matrix of size NR-by-NR. NR is the number of receive antennas. The main diagonal elements must be all ones, and the off-diagonal elements must have a magnitude smaller than or equal to one.If the channel is frequency-selective (
PathDelays
is a row vector of length NP), specifyReceiveCorrelationMatrix
as one of these arrays:2-D Hermitian matrix of size NR-by-NR with element properties as previously described. Each path has the same receive correlation matrix.
3-D array of size NR-by-NR-by-NP, where each submatrix of size NR-by-NR is a Hermitian matrix with element properties as previously described. Each path has its own receive correlation matrix.
Dependencies
To enable this property, set MIMOCorrelation
to 'Custom'
and Polarization
to either 'Co-Polar'
or
'Cross-Polar'
.
Data Types: double
Complex Number Support: Yes
TransmitPolarizationAngles
— Transmit polarization slant angles in degrees
[45 -45]
(default) | row vector
Transmit polarization slant angles in degrees, specified as a row vector.
Dependencies
To enable this property, set MIMOCorrelation
to 'Custom'
and Polarization
to 'Cross-Polar'
.
Data Types: double
ReceivePolarizationAngles
— Receive polarization slant angles in degrees
[90 0]
(default) | row vector
Receive polarization slant angles in degrees, specified as a row vector.
Dependencies
To enable this property, set MIMOCorrelation
to 'Custom'
and Polarization
to 'Cross-Polar'
.
Data Types: double
XPR
— Cross-polarization power ratio in dB
10.0
(default) | numeric scalar | row vector
Cross-polarization power ratio in dB, specified as a numeric scalar or a row vector. This property corresponds to the ratio between the vertical-to-vertical (PVV) and vertical-to-horizontal (PVH) polarizations defined for the clustered delay line (CDL) models in TR 38.901 Section 7.7.1.
If the channel is frequency-flat (
PathDelays
is a scalar), specifyXPR
as a scalar.If the channel is frequency-selective (
PathDelays
is a row vector of length NP), specifyXPR
as one of these values:Scalar — Each path has the same cross-polarization power ratio.
Row vector of size 1-by-NP — Each path has its own cross-polarization power ratio.
The default value corresponds to the cluster-wise cross-polarization power ratio of CDL-A as defined in TR 38.901 Section 7.7.1, Table 7.7.1-1.
Dependencies
To enable this property, set MIMOCorrelation
to 'Custom'
and Polarization
to 'Cross-Polar'
.
Data Types: double
SpatialCorrelationMatrix
— Combined correlation for channel
[1 0; 0 1]
(default) | 2-D matrix | 3-D array
Combined correlation for the channel, specified as 2-D matrix or 3-D array. The matrix determines the product of the number of transmit antennas (NT) and the number of receive antennas (NR).
If the channel is frequency-flat (
PathDelays
is a scalar), specifySpatialCorrelationMatrix
as a 2-D Hermitian matrix of size (NT ⨉ NR)-by-(NT ⨉ NR).The magnitude of any off-diagonal element must be no larger than the geometric mean of the two corresponding diagonal elements.If the channel is frequency-selective (
PathDelays
is a row vector of length NP), specifySpatialCorrelationMatrix
as one of these arrays:2-D Hermitian matrix of size (NT ⨉ NR)-by-(NT ⨉ NR) with off-diagonal element properties as previously described. Each path has the same spatial correlation matrix.
3-D array of size (NT ⨉ NR)-by-(NT ⨉ NR)-by-NP array — where each matrix of size (NT ⨉ NR)-by-(NT ⨉ NR) is a Hermitian matrix with off-diagonal element properties as previously described. Each path has its own spatial correlation matrix.
Dependencies
To enable this property, set MIMOCorrelation
to 'Custom'
and Polarization
to 'Custom'
.
Data Types: double
Mobility
These properties configure how the transmitter or receiver move.
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 both the maximum Doppler shift and
satellite Doppler shift are set to 0, the channel remains static for the entire input.
To generate a new channel realization, either reset the object by calling the
reset
function or set the satellite
Doppler shift to a nonzero value in case of NTN profiles.
Data Types: double
SatelliteDopplerShift
— Satellite Doppler shift in Hz
0 (default) | numeric scalar
Since R2024a
Satellite Doppler shift in Hz, specified as a numeric scalar. Satellite Doppler
shift is calculated using the satellite altitude, elevation angle, carrier frequency,
and satellite velocity. The default value of
SatelliteDopplerShift
corresponds to the Doppler shift due to a
satellite having an elevation angle of 90 degrees. When both the maximum Doppler shift
and satellite Doppler shift are set to 0, the channel remains static for the entire
input. To generate a new channel realization, either reset the object by calling the
reset
function or set the satellite
Doppler shift to a nonzero value in case of NTN profiles.
Tunable: Yes
Dependencies
To enable this property, set DelayProfile
to 'NTN-TDL-A'
,
'NTN-TDL-B'
, 'NTN-TDL-C'
,
'NTN-TDL-D'
, 'NTN-TDLA100'
, or
'NTN-TDLC5'
.
Data Types: double
Channel Control
These properties configure implementation-specific parameters of the channel that are not defined by TR 38.901. For example, you can enable or disable channel filtering, set the data type and the number of samples of the filtered signal, and set control parameters for the path gain generation.
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
PathGainSampleRate
— Sample rate for path gain generation
'signal'
(default) | 'auto'
Since R2024b
Sample rate for path gain generation, specified as one of these values:
'signal'
— The channel uses the sample rate specified by theSampleRate
property for the path gain generation.'auto'
— Use this option to enable the channel to automatically reduce the number of path gain samples based on the maximum Doppler shift value. The channel usesmin(
as the sample rate for the path gain generation. If the maximum Doppler shift is set toMaximumDopplerShift
⨯2⨯64,SampleRate
)0
, the channel generates one path gain per antenna per path.
Data Types: char
| string
NormalizePathGains
— Normalize path gains
true
(default) | false
Normalize path gains, specified as true
or
false
. Use this property to normalize the fading processes. When
this property is set to true
, the total power of the path gains,
averaged over time, is 0 dB. When this property is set to false
,
the path gains are not normalized. The average powers of the path gains are specified
by the selected delay profile, or if DelayProfile
is set to 'Custom'
, by 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.
Data Types: double
NumSinusoids
— Number of modeling sinusoids
48
(default) | positive integer
Number of modeling sinusoids, specified as a positive integer. These sinusoids model the fading process.
Data Types: double
RandomStream
— Source of random number stream
'mt19937ar with seed'
(default) | 'Global stream'
Source of the random number stream to initialize the sinusoid phases 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.
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 outputs are normalized by the number of receive antenna elements.
Note
When you call the swapTransmitAndReceive
function to reverse the role of the transmit
and receive antennas within the channel, the function also swaps the NumTransmitAntennas
and NumReceiveAntennas
properties. Hence the normalization is always by
the number of receive antenna elements, specified by the NumReceiveAntennas
property.
Data Types: logical
ChannelResponseOutput
— Channel response output
'path-gains'
(default) | 'ofdm-response'
Since R2024b
Channel response output, specified as one of these options:
'path-gains'
— The object returns the path gains and sample times, as shown in this figure. When channel filtering is enabled, the object also returns the filtered output signal. Alternatively, to configure the channel to return only the path gains and sample times, set theChannelFiltering
property tofalse
to disable channel filtering.'ofdm-response'
— The object returns the OFDM channel response and timing offset when you call the object with a carrier input, as shown in this figure. When channel filtering is enabled, the object also returns the filtered output signal. Alternatively, to configure the channel to return only the OFDM channel response and timing offset, set theChannelFiltering
property tofalse
to disable channel filtering.
Data Types: string
| char
ChannelFiltering
— Fading channel filtering
true
(default) | false
Fading channel filtering, specified as one of these options:
true
— Enable channel filtering. The object takes an input signal to filter through the channel.false
— Disable channel filtering. The object takes no input signal and returns only the OFDM channel response and timing offset (since R2024b) or the path gains and sample times, depending on theChannelResponseOutput
property.When you disable channel filtering, these conditions apply:
The
NumTimeSamples
property controls the duration of the fading process realization at a sample rate given by theSampleRate
property.The
OutputDataType
property specifies the data type of the generated channel response output (OFDM channel response or path gains).
For an overview of how this property affects the internal architecture of the channel, see Internal Architecture of TDL Channel Model.
For a use case of disabling channel filtering, see the Calculate OFDM Channel Response of TDL Channel example.
Data Types: logical
NumTimeSamples
— Number of time samples
30720
(default) | positive integer
Number of time samples, specified as a positive integer. When channel filtering is disabled, you can use this property to set the duration of the fading process realization.
When you call the object with the carrier
input, carrier
, set the NumTimeSamples
property to a value that is at least the number of samples in a slot. You can
calculate the number of samples in a slot from the output structure of
nrOFDMInfo(carrier)
. (since R2024b)
Tunable: Yes
Dependencies
To enable this property, set ChannelFiltering
to false
.
Data Types: double
OutputDataType
— Data type of channel response output
'double'
(default) | 'single'
Data type of the generated channel response output, specified as
'double'
or 'single'
. When channel filtering
is disabled, use this property to specify the data type of the OFDM channel response (since R2024b) or path gains, depending on the ChannelResponseOutput
property.
Dependencies
To enable this property, set ChannelFiltering
to false
.
Data Types: double
Read-Only Properties
TransmitAndReceiveSwapped
— Reversed channel link direction
false
(default) | true
This property is read-only.
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 thenrTDLChannel
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 thenrTDLChannel
object restores the original link direction of the channel and toggles this property value fromtrue
tofalse
.
Data Types: logical
Usage
Syntax
Description
Channel Filtering
OFDM Channel Response and Timing Offset
Since R2024b
To use these syntaxes, set the ChannelResponseOutput
property to 'ofdm-response'
.
[
applies OFDM demodulation to the channel impulse response based on the specified
carrier, signalOut
,ofdmResponse
] = tdl(signalIn
,carrier
)carrier
, and returns the OFDM channel response, in
addition to the channel-impaired signal. This output shows how the channel affects each
resource element of an OFDM signal.
[
also returns the timing offset of the strongest path in the channel impulse response.
The channel impulse response is averaged across all channel snapshots and summed across
all transmit and receive antennas.signalOut
,ofdmResponse
,timingOffset
] = tdl(signalIn
,carrier
)
[
returns only the OFDM channel response and timing offset without filtering an input
signal. The ofdmResponse
,timingOffset
] = tdl(carrier
)tdl
object and the carrier
input act
as a source for the calculation of the OFDM channel response and timing offset. To use
this syntax, you must also set the ChannelFiltering
property to false
.
Path Gains and Sample Times
To use these syntaxes, set the ChannelResponseOutput
property to
'path-gains'
(since R2024b).
[
also returns the sample times of the channel snapshots of signalOut
,pathGains
,sampleTimes
] = tdl(signalIn
)pathGains
(first-dimension elements).
[
returns only the path gains and sample times without filtering an input signal. The
pathGains
,sampleTimes
] = tdl()tdl
object acts as a source for the calculation of the path gains
and sample times. To use this syntax, you must also set the ChannelFiltering
property to false
.
Input Arguments
signalIn
— Input signal
complex scalar | vector | NS-by-NT
matrix
Input signal, specified as a complex scalar, vector, or NS-by-NT matrix, where:
NS is the number of samples.
NT is the number of transmit antennas.
Data Types: single
| double
Complex Number Support: Yes
carrier
— Carrier configuration parameters
nrCarrierConfig
object
Since R2024b
Carrier configuration parameters for a specific OFDM numerology, specified as an
nrCarrierConfig
object.
Before you call the channel with this input:
Set the
SampleRate
channel property to the sample rate derived from the carrier. You can obtain this value from theSampleRate
field of the output structure ofnrOFDMInfo(carrier)
.When channel filtering is disabled, set the
NumTimeSamples
object property to a value that is at least the number of samples in a slot. You can calculate the number of samples in a slot from the output structure ofnrOFDMInfo(carrier)
.
Output Arguments
signalOut
— Output signal
complex scalar | vector | NS-by-NR
matrix
Output signal, returned as a complex scalar, vector, or NS-by-NR matrix, where:
NS is the number of samples.
NR is the number of receive antennas.
The output signal data type is of the same precision as the input signal data type.
Data Types: single
| double
Complex Number Support: Yes
ofdmResponse
— OFDM channel response
K-by-N-by-NR-by-NT
real-valued array
Since R2024b
OFDM channel response, returned as a K-by-N-by-NR-by-NT real-valued array, where:
K is the number of subcarriers.
N is the number of OFDM symbols.
NR is the number of receive antenna elements
NT is the number of transmit antenna elements
To obtain the OFDM channel response, the object applies OFDM demodulation to the
channel impulse response based on the specified carrier, carrier
.
This output shows how the channel affects each resource element of an OFDM
signal.
The OFDM channel response data type is of the same precision as the input signal
data type. When channel filtering is disabled, use the OutputDataType
property to specify the data type of this output.
Data Types: single
| double
timingOffset
— Timing offset of strongest path in channel impulse response
nonnegative integer
Since R2024b
Timing offset of the strongest path in the channel impulse response, in samples, returned as a nonnegative integer. The channel impulse response is averaged across all channel snapshots and summed across all transmit and receive antennas.
Data Types: double
pathGains
— MIMO channel path gains of fading process
NS-by-NP-by-NT-by-NR
complex matrix
MIMO channel path gains of the fading process, returned as an NS-by-NP-by-NT-by-NR complex matrix, where:
NS is the number of samples.
NP is the number of paths, specified by the length of the
PathDelays
property oftdl
.NT is the number of transmit antennas.
NR is the number of receive antennas.
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
NS-by-1 column vector of real
numbers
Sample times of the channel snapshots of the path gains, returned as an
NS-by-1 column vector of real numbers.
NS is the first dimension of
pathGains
that corresponds to the number of samples.
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 nrTDLChannel
info | Characteristic information of link-level MIMO channel |
getPathFilters | Get path filter impulse response for link-level MIMO channel |
swapTransmitAndReceive | Reverse link direction in TDL channel model |
Examples
Calculate OFDM Channel Response of TDL Channel
Create a default carrier configuration object.
carrier = nrCarrierConfig;
Create a TDL channel object with the TDL-B delay profile.
channel = nrTDLChannel;
channel.DelayProfile = "TDL-B";
channel.MaximumDopplerShift = 200;
Set the sample rate of the channel to match the sample rate of the carrier.
ofdmInfo = nrOFDMInfo(carrier); channel.SampleRate = ofdmInfo.SampleRate;
Specify the OFDM channel response as the channel output.
channel.ChannelResponseOutput = "ofdm-response";
Disable channel filtering.
channel.ChannelFiltering = false;
Set the number of time samples to generate a single-slot OFDM response.
channel.NumTimeSamples = sum(ofdmInfo.SymbolLengths(1:carrier.SymbolsPerSlot));
Call the TDL channel object by specifying the carrier input. The object returns the OFDM channel response and timing offset of the TDL channel.
[ofdmResponse,timingOffset] = channel(carrier);
Display the OFDM channel response.
mesh(abs(ofdmResponse(:,:,1,1))); title('OFDM Channel Response of TDL Channel'); xlabel('OFDM Symbol'); ylabel("Subcarrier"); zlabel("Magnitude");
Transmission Over MIMO Channel Model with Delay Profile TDL
Display the waveform spectrum received through a tapped delay line (TDL) multi-input/multi-output (MIMO) channel model from TR 38.901 Section 7.7.2 using an nrTDLChannel
System object.
Define the channel configuration structure using an nrTDLChannel
System object. Use delay profile TDL-C from TR 38.901 Section 7.7.2, a delay spread of 300 ns, and UE velocity of 30 km/h:
v = 30.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 tdl = nrTDLChannel; tdl.DelayProfile = 'TDL-C'; tdl.DelaySpread = 300e-9; tdl.MaximumDopplerShift = fd;
Create a random waveform of 1 subframe duration with 1 antenna.
SR = 30.72e6; T = SR * 1e-3; tdl.SampleRate = SR; tdlinfo = info(tdl); Nt = tdlinfo.NumTransmitAntennas; txWaveform = complex(randn(T,Nt),randn(T,Nt));
Transmit the input waveform through the channel.
rxWaveform = tdl(txWaveform);
Plot the received waveform spectrum.
analyzer = spectrumAnalyzer('SampleRate',tdl.SampleRate); analyzer.Title = ['Received Signal Spectrum ' tdl.DelayProfile]; analyzer(rxWaveform);
Plot Path Gains for TDL-E Delay Profile with SISO
Plot the path gains of a tapped delay line (TDL) single-input/single-output (SISO) channel using an nrTDLChannel
object.
Configure a channel with delay profile TDL-E from TR 38.901 Section 7.7.2. Set the maximum Doppler shift to 70 Hz and enable path gain output.
tdl = nrTDLChannel;
tdl.SampleRate = 500e3;
tdl.MaximumDopplerShift = 70;
tdl.DelayProfile = 'TDL-E';
Configure the transmit and receive antenna arrays for SISO operation.
tdl.NumTransmitAntennas = 1; tdl.NumReceiveAntennas = 1;
Create a dummy input signal. The length of the input determines the time samples of the generated path gain.
in = zeros(1000,tdl.NumTransmitAntennas);
To generate the path gains, call the channel on the input. Plot the results.
[~, pathGains] = tdl(in); mesh(10*log10(abs(pathGains))); view(26,17); xlabel('Channel Path'); ylabel('Sample (time)'); zlabel('Magnitude (dB)');
Transmission Over TDL-D Channel Model with Cross-Polar Antennas
Display the waveform spectrum received through a tapped delay line (TDL) channel model using delay profile TDL-D from TR 38.901 Section 7.7.2.
Configure 4-by-2, high-correlation, cross-polar antennas as specified in TS 36.101 Annex B.2.3A.3.
tdl = nrTDLChannel; tdl.NumTransmitAntennas = 4; tdl.DelayProfile = 'TDL-D'; tdl.DelaySpread = 10e-9; tdl.KFactorScaling = true; tdl.KFactor = 7.0; tdl.MIMOCorrelation = 'High'; tdl.Polarization = 'Cross-Polar';
Create a random waveform of 1 subframe duration with 4 antennas.
SR = 1.92e6; T = SR * 1e-3; tdl.SampleRate = SR; tdlinfo = info(tdl); Nt = tdlinfo.NumTransmitAntennas; txWaveform = complex(randn(T,Nt),randn(T,Nt));
Transmit the input waveform through the channel.
rxWaveform = tdl(txWaveform);
Plot the received waveform spectrum.
analyzer = spectrumAnalyzer('SampleRate',tdl.SampleRate); analyzer.Title = ['Received Signal Spectrum ' tdl.DelayProfile]; analyzer(rxWaveform);
Transmission Over TDL Channel Model with Custom Delay Profile
Transmit waveform through a tapped delay line (TDL) channel model from TR 38.901 Section 7.7.2 with customized delay profile.
Define the channel configuration structure using an nrTDLChannel
System object. Customize the delay profile with two taps.
First tap: Rician with average power 0 dB, K-factor 10 dB, and zero delay.
Second tap: Rayleigh with average power 5 dB, and 45 ns path delay using TDL-D.
tdl = nrTDLChannel; tdl.NumTransmitAntennas = 1; tdl.DelayProfile = 'Custom'; tdl.FadingDistribution = 'Rician'; tdl.KFactorFirstTap = 10.0; tdl.PathDelays = [0.0 45e-9]; tdl.AveragePathGains = [0.0 -5.0];
Create a random waveform of 1 subframe duration with 1 antenna.
SR = 30.72e6; T = SR * 1e-3; tdl.SampleRate = SR; tdlinfo = info(tdl); Nt = tdlinfo.NumTransmitAntennas; txWaveform = complex(randn(T,Nt),randn(T,Nt));
Transmit the input waveform through the channel.
rxWaveform = tdl(txWaveform);
Transmission Over TDL Channel Model with NTN-TDL-A Delay Profile
Display the waveform spectrum received through an NTN-TDL channel model from TR 38.811 Section 6.9.2 with NTN-TDL-A delay profile.
Configure an NTN channel with NTN-TDL-A delay profile for a satellite moving at an altitude of 600 km with a speed of 7562.2 m/s and having an elevation angle of 50 degrees with the user equipment (UE).
ntnChan = nrTDLChannel;
ntnChan.DelayProfile = 'NTN-TDL-A';
ntnChan.DelaySpread = 100e-9;
Calculate the maximum Doppler shift due to the UE and satellite Doppler shift.
r = physconst('earthradius'); % Earth radius in m c = physconst('lightspeed'); % Speed of light in m/s fc = 2e9; % Carrier frequency in Hz theta = 50; % Elevation angle in degrees h = 600e3; % Satellite altitude in m vSat = 7562.2; % Satellite speed in m/s vUE = 3*1000/3600; % UE speed in m/s fdMaxUE = (vUE*1000/3600)/c*fc; % UE maximum Doppler shift in Hz fdSat = (vSat*fc/c)*(r*cosd(theta)/(r+h)); % Satellite Doppler shift in Hz ntnChan.SatelliteDopplerShift = fdSat; ntnChan.MaximumDopplerShift = fdMaxUE;
Create a random waveform of 1 subframe duration with 1 antenna.
SR = 30.72e6;
T = SR*1e-3;
ntnChan.SampleRate = SR;
ntnChanInfo = info(ntnChan);
Nt = ntnChanInfo.NumTransmitAntennas;
txWaveform = randn(T,Nt,'like',1i);
Transmit the input waveform through the channel.
rxWaveform = ntnChan(txWaveform);
Plot the received waveform spectrum.
analyzer = spectrumAnalyzer('SampleRate',ntnChan.SampleRate); analyzer.Title = ['Received Signal Spectrum ' ntnChan.DelayProfile]; analyzer(rxWaveform);
Algorithms
Internal Architecture of TDL Channel Model
The object properties configure the TDL channel filtering and channel coefficients generation.
To enable or disable TDL channel filtering, use the ChannelFiltering
property.
TDL Channel Filtering Enabled — When you set
ChannelFiltering
totrue
, the object accepts an input signal and returns the channel-impaired signal. Depending on theChannelResponseOutput
property, the object returns also the:OFDM channel response and timing offset (when
ChannelResponseOutput
='ofdm-response'
). (since R2024b)Path gains and sample times (when
ChannelResponseOutput
='path-gains'
).
This figure shows the internal architecture of the TDL channel model when channel filtering is enabled and the object returns the OFDM channel response and timing offset. (since R2024b)
TDL Channel Filtering Disabled — When you set
ChannelFiltering
tofalse
, the object does not accept an input signal. However, depending on theChannelResponseOutput
property, the object returns the:OFDM channel response and timing offset (when
ChannelResponseOutput
='ofdm-response'
). (since R2024b)Path gains and sample times (when
ChannelResponseOutput
='path-gains'
).
Use the
OutputDataType
andNumTimeSamples
properties to set the channel response output data type and the duration of the fading process realization, respectively.This figure shows the internal architecture of the TDL channel model when channel filtering is disabled and the object returns only the OFDM channel response and timing offset. (since R2024b)
To configure TR 38.901-specific parameters:
Set the delay profile,
DelayProfile
, then configure delay-profile-specific parameters. Depending on the delay profile, use the properties listed in the Predefined Delay Profile or Custom Delay Profile sections.Configure the MIMO correlation aspects of the channel by using the properties listed in the Antenna Array section.
Configure the UE mobility by using the properties listed in the Mobility section.
To configure non-TR 38.901-specific implementation details of the coefficients generation, use the properties listed in the Channel Control section.
References
[1] 3GPP TR 38.811. “Study on New Radio (NR) to support non-terrestrial networks.” 3rd Generation Partnership Project; Technical Specification Group Radio Access Network.
[2] 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.
[3] 3GPP TS 36.101. “Evolved Universal Terrestrial Radio Access (E-UTRA); User Equipment (UE) radio transmission and reception.” 3rd Generation Partnership Project; Technical Specification Group Radio Access Network.
[4] 3GPP TS 36.104. “Evolved Universal Terrestrial Radio Access (E-UTRA); Base Station (BS) radio transmission and reception.” 3rd Generation Partnership Project; Technical Specification Group Radio Access Network.
[5] 3GPP TS 38.101-5. “NR; User Equipment (UE) radio transmission and reception; Part 5: Satellite access Radio Frequency (RF) and performance requirements.” 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 R2018bR2024b: Configure sample rate for path gain generation
Configure the sample rate for path gain generation by using the PathGainSampleRate
property. To enable the channel to automatically reduce the
number of path gain samples in the channel filtering process, set PathGainSampleRate
to 'auto'
.
R2024b: Obtain OFDM channel response and timing offset directly from channel
The object enables you to obtain the OFDM channel response and timing offset directly
from the channel. To enable this functionality, set the ChannelResponseOutput
object property to 'ofdm-response'
,
then call the object with an nrCarrierConfig
object in addition
to the input signal.
R2024a: Configure additional Release 17 channel profiles and NTN channel profiles
The object now enables you to:
Configure additional simplified tapped delay line (TDL) delay profiles from Release 17 of TS 38.101-4 Annexes B.2.1.1 and B.2.1.2 by setting the
DelayProfile
object property to'TDLD30'
,'TDLA10'
, or'TDLD10'
.Configure NTN channel profiles from TR 38.811 by setting
DelayProfile
to'NTN-TDL-A'
,'NTN-TDL-B'
,'NTN-TDL-C'
, or'NTN-TDL-D'
.Configure the NTN simplified delay profiles from TS 38.101-5 by setting
DelayProfile
to'NTN-TDLA100'
or'NTN-TDLC5'
.Configure the Doppler shift due to satellite movement for all channel taps by using the
SatelliteDopplerShift
object property. To enable this property, setDelayProfile
to'NTN-TDL-A'
,'NTN-TDL-B'
,'NTN-TDL-C'
,'NTN-TDL-D'
,'NTN-TDLA100'
, or'NTN-TDLC5'
.
See Also
Functions
Objects
Topics
- TDD Reciprocity-Based PDSCH MU-MIMO Using SRS
- Model NR NTN Channel (Satellite Communications Toolbox)
- NR NTN PDSCH Throughput
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)
Asia Pacific
- Australia (English)
- India (English)
- New Zealand (English)
- 中国
- 日本Japanese (日本語)
- 한국Korean (한국어)