Send signal through TDL channel model
The nrTDLChannel
System object™ sends an input signal through a tapped delay line (TDL) multi-input multi-output
(MIMO) link-level fading channel to obtain the channel-impaired signal. The object implements
the following aspects of TR 38.901 [1]:
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
To send a signal through 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?.
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
)
tdl =
nrTDLChannel('DelayProfile','TDL-D','DelaySpread',2e-6)
creates a TDL
channel model with TDL-D delay profile and a 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
— TDL delay profile'TDL-A'
(default) | 'TDL-B'
| 'TDL-C'
| 'TDL-D'
| 'TDL-E'
| 'Custom'
TDL delay profile, specified as one of 'TDL-A'
,
'TDL-B'
, 'TDL-C'
, 'TDL-D'
,
'TDL-E'
, or 'Custom'
. See TR 38.901 Section
7.7.2, Tables 7.7.2-1 to 7.7.2-5.
When you set this property to 'Custom'
, configure the delay
profile using properties PathDelays
, AveragePathGains
, FadingDistribution
, and KFactorFirstTap
.
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, 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
FadingDistribution
— Fading process statistical distribution'Rayleigh'
(default) | 'Rician'
Fading process statistical distribution, specified as
'Rayleigh'
or 'Rician'
.
To enable this property, set DelayProfile
to 'Custom'
.
Data Types: char
| string
KFactorFirstTap
— K-factor of first tap of delay profile in dB13.3
(default) | numeric scalarK-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.
To enable this property, set DelayProfile
to 'Custom'
and FadingDistribution
to 'Rician'
.
Data Types: double
DelaySpread
— Desired RMS delay spread in seconds30e-9
(default) | numeric scalarDesired 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 and Tables 7.7.3-1 and 7.7.3-2.
To enable this property, set DelayProfile
to 'TDL-A'
,
'TDL-B'
, 'TDL-C'
, 'TDL-D'
,
or 'TDL-E'
. This property does not apply for custom delay
profile.
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
KFactorScaling
— K-factor scalingfalse
(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.
To enable this property, set DelayProfile
to 'TDL-D'
or
'TDL-E'
.
Data Types: double
KFactor
— Desired K-factor for scaling in dB9.0
(default) | numeric scalarDesired 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 is
Kmodel
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.
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
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. The
TransmissionDirection
property controls the transmission
direction.
'UplinkMedium'
— See TS 36.104, Annex B.5.2.
'Custom'
— The ReceiveCorrelationMatrix
property specifies the correlation
between UE antennas, and the TransmitCorrelationMatrix
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 [2] and TS 36.104 [3]
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'
.
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 antennas1
(default) | positive integerNumber of transmit antennas, specified as a positive integer.
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 antennasNumber of receive antennas, specified as a positive integer.
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 arraySpatial correlation of transmitter, specified as a 2-D matrix or 3-D array.
If the channel is frequency-flat (PathDelays
is a scalar), specify
TransmitCorrelationMatrix
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), specify
TransmitCorrelationMatrix
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.
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 arraySpatial correlation of receiver, specified as a 2-D matrix or 3-D array.
If the channel is frequency-flat (PathDelays
is a scalar), specify
ReceiveCorrelationMatrix
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), specify
ReceiveCorrelationMatrix
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.
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 vectorTransmit polarization slant angles in degrees, specified as a row vector.
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 vectorReceive polarization slant angles in degrees, specified as a row vector.
To enable this property, set MIMOCorrelation
to 'Custom'
and Polarization
to 'Cross-Polar'
.
Data Types: double
XPR
— Cross-polarization power ratio in dB10.0
(default) | numeric scalar | row vectorCross-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), specify XPR
as a
scalar.
If the channel is frequency-selective (PathDelays
is a row vector of length
NP), specify XPR
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.
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 arrayCombined 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), specify
SpatialCorrelationMatrix
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), specify
SpatialCorrelationMatrix
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.
To enable this property, set MIMOCorrelation
to 'Custom'
and Polarization
to 'Custom'
.
Data Types: double
NormalizePathGains
— Normalize path gainstrue
(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 seconds0.0
(default) | numeric scalarTime offset of fading process in seconds, specified as a numeric scalar.
Data Types: double
NumSinusoids
— Number of modeling sinusoids48
(default) | positive integerNumber 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 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
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 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
TransmitAndReceiveSwapped
— Reversed channel link directionfalse
(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 the swapTransmitAndReceive
function on the
nrTDLChannel
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
nrTDLChannel
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 the path gains.signalOut
,pathGains
,sampleTimes
] = tdl(signalIn
)
signalIn
— Input signalInput 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
signalOut
— Output signalOutput 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
pathGains
— MIMO channel path gains of fading processMIMO 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 of tdl
.
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 snapshotsSample 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
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)
nrTDLChannel
info | Get characteristic information about link-level MIMO fading channel |
getPathFilters | Get path filter impulse response for link-level MIMO fading channel |
swapTransmitAndReceive | Reverse link direction in TDL channel model |
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 = dsp.SpectrumAnalyzer('SampleRate',tdl.SampleRate,... 'AveragingMethod','Exponential','ForgettingFactor',0.99 ); analyzer.Title = ['Received Signal Spectrum ' tdl.DelayProfile]; analyzer(rxWaveform);
Plot the path gains of a tapped delay line (TDL) single-input/single-output (SISO) channel using an nrTDLChannel
System 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)');
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 = dsp.SpectrumAnalyzer('SampleRate',tdl.SampleRate); analyzer.Title = ['Received Signal Spectrum ' tdl.DelayProfile]; analyzer(rxWaveform);
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);
[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.
[2] 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.
[3] 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.
Usage notes and limitations:
See System Objects in MATLAB Code Generation (MATLAB Coder).
Tiene una versión modificada de este ejemplo. ¿Desea abrir este ejemplo con sus modificaciones?
Ha hecho clic en un enlace que corresponde a este comando de MATLAB:
Ejecute el comando introduciéndolo en la ventana de comandos de MATLAB. Los navegadores web no admiten comandos de MATLAB.
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.