Main Content

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)

TDL channel model architecture with channel filtering and OFDM channel response output enabled

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:

  1. Create the nrTDLChannel object and set its properties.

  2. 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

tdl = nrTDLChannel creates a TDL MIMO channel System object.

tdl = nrTDLChannel(Name,Value) 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.

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

expand all

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.

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 the PathDelays, AveragePathGains, FadingDistribution, and KFactorFirstTap 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'.

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

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

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 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.

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'.

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

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

Fading process statistical distribution, specified as 'Rayleigh' or 'Rician'.

Dependencies

To enable this property, set DelayProfile to 'Custom'.

Data Types: char | string

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.

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 [3] and TS 36.104 [4].

Data Types: char | string

Antenna polarization arrangement, specified as 'Co-Polar', 'Cross-Polar', 'Custom'.

Data Types: char | string

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

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

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

Spatial 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.

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

Spatial 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.

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

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

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

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), 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.

Dependencies

To enable this property, set MIMOCorrelation to 'Custom' and Polarization to 'Cross-Polar'.

Data Types: double

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), specify SpatialCorrelationMatrix as a 2-D Hermitian matrix of size (NTNR)-by-(NTNR).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 (NTNR)-by-(NTNR) with off-diagonal element properties as previously described. Each path has the same spatial correlation matrix.

    • 3-D array of size (NTNR)-by-(NTNR)-by-NP array — where each matrix of size (NTNR)-by-(NTNR) 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.

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

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.

Sample rate of the input signal in Hz, specified as a positive numeric scalar.

Data Types: double

Since R2024b

Sample rate for path gain generation, specified as one of these values:

  • 'signal' — The channel uses the sample rate specified by the SampleRate 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 uses min(MaximumDopplerShift⨯2⨯64,SampleRate) as the sample rate for the path gain generation. If the maximum Doppler shift is set to 0, the channel generates one path gain per antenna per path.

Data Types: char | string

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

Time offset of fading process in seconds, specified as a numeric scalar.

Data Types: double

Number of modeling sinusoids, specified as a positive integer. These sinusoids model the fading process.

Data Types: double

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 the reset function resets the filters and reinitializes the random number stream to the value of the Seed 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 the reset function resets only the filters.

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

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

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 the ChannelFiltering property to false to disable channel filtering.

    TDL channel model architecture in which channel filtering is enabled and the object returns the path gains and sample times

  • '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 the ChannelFiltering property to false to disable channel filtering.

    TDL channel model architecture in which channel filtering is enabled and the object returns the OFDM channel response and timing offset

Data Types: string | char

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 the ChannelResponseOutput 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 the SampleRate 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

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

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

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

Usage

Description

Channel Filtering

signalOut = tdl(signalIn) sends the input signal through a TDL MIMO fading channel and returns the channel-impaired signal.

example

OFDM Channel Response and Timing Offset

Since R2024b

To use these syntaxes, set the ChannelResponseOutput property to 'ofdm-response'.

[signalOut,ofdmResponse] = tdl(signalIn,carrier) applies OFDM demodulation to the channel impulse response based on the specified 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.

[signalOut,ofdmResponse,timingOffset] = tdl(signalIn,carrier) 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.

[ofdmResponse,timingOffset] = tdl(carrier) returns only the OFDM channel response and timing offset without filtering an input signal. The 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.

example

Path Gains and Sample Times

To use these syntaxes, set the ChannelResponseOutput property to 'path-gains' (since R2024b).

[signalOut,pathGains] = tdl(signalIn) returns the MIMO channel path gains of the underlying fading process, in addition to the channel-impaired signal.

example

[signalOut,pathGains,sampleTimes] = tdl(signalIn) also returns the sample times of the channel snapshots of pathGains (first-dimension elements).

[pathGains,sampleTimes] = tdl() returns only the path gains and sample times without filtering an input signal. The 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

expand all

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

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 the SampleRate field of the output structure of nrOFDMInfo(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 of nrOFDMInfo(carrier).

Output Arguments

expand all

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

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

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

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 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

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)

expand all

infoCharacteristic information of link-level MIMO channel
getPathFilters Get path filter impulse response for link-level MIMO channel
swapTransmitAndReceiveReverse link direction in TDL channel model
stepRun System object algorithm
cloneCreate duplicate System object
isLockedDetermine if System object is in use
releaseRelease resources and allow changes to System object property values and input characteristics
resetReset internal states of System object

Examples

collapse all

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");

Figure contains an axes object. The axes object with title OFDM Channel Response of TDL Channel, xlabel OFDM Symbol, ylabel Subcarrier contains an object of type surface.

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 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)');

Figure contains an axes object. The axes object with xlabel Channel Path, ylabel Sample (time) contains an object of type surface.

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);

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);

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

expand all

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

Version History

Introduced in R2018b

expand all