Main Content

nrHSTChannel

Send signal through HST channel model

Description

The nrHSTChannel System object™ sends an input signal through a high-speed train (HST) multi-input multi-output (MIMO) link-level propagation channel to obtain the channel-impaired signal. The object implements these aspects of TS 38.101-4 [1]:

  • Annex B.1: Static propagation condition

  • Annex B.3.1: Single-tap channel profile (same as TS 38.104 Annex G.3: High-speed train condition [2])

  • Annex B.3.2: HST-SFN channel profile

  • Annex B.3.3: HST-DPS channel profile

To send a signal through the HST MIMO channel model:

  1. Create the nrHSTChannel 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

hst = nrHSTChannel creates an HST MIMO channel System object.

hst = nrHSTChannel(Name=Value) sets properties using one or more optional name-value arguments. For example, Velocity=350 sets the train velocity to 350 km/h.

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.

HST channel profile, specified as one of these values.

  • 'HST' — Use this value to specify the HST single-tap channel profile, as defined in TS 38.101-4 Annex B.3.1.

  • 'HST-SFN' — Use this value to specify the HST single frequency network (SFN) multi-tap fading channel profile, as defined in TS 38.101-4 Annex B.3.2.

  • 'HST-DPS' — Use this value to specify the HST dynamic point switching (DPS) single-tap channel profile, as defined in TS 38.101-4 Annex B.3.3.

Data Types: char | string

Distance between gNodeBs in meters, specified as a positive numeric scalar. When you set the ChannelProfile property to 'HST', Ds/2 is the initial distance of the train from a gNodeB.

Data Types: double

Minimum distance between a gNodeB and the railway track in meters, specified as a positive numeric scalar.

Data Types: double

Train velocity in km/h, specified as a nonnegative numeric scalar. For static propagation conditions, as defined in TS 38.101-4 Annex B.1, set this property and the MaximumDopplerShift property to 0.

Data Types: double

Maximum Doppler shift in Hz, specified as a nonnegative numeric scalar. This property applies to all channel paths. For static propagation conditions, as defined in TS 38.101-4 Annex B.1, set this property and the Velocity property to 0.

Data Types: double

Number of taps in the HST-SFN channel profile, specified as a positive integer.

Dependencies

To enable this property, set the ChannelProfile property to 'HST-SFN'.

Data Types: double

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

Data Types: double

Number of transmit antennas, specified as a positive integer. When you set ChannelFiltering to true, the object ignores this property and uses the number of columns of the input signal to set the number of transmit antennas.

Dependencies

To enable this property, set ChannelFiltering to false.

Data Types: double

Number of receive antennas, specified as a positive integer.

Data Types: double

Time offset of the channel process in seconds, specified as a nonnegative scalar.

Tunable: Yes

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.

Data Types: logical

Channel filtering, specified as true or false. When this property is set to false, these conditions apply.

  • The object takes no input signal and returns only the path gains and sample times.

  • The NumTimeSamples property controls the duration of the channel process at a sampling rate specified by the SampleRate property.

  • The channel coefficients sampling rate is one sample per each time sample from 0 to NumTimeSamples – 1.

Data Types: logical

Number of time samples, specified as a positive integer. Use this property to set the duration of the channel process.

Tunable: Yes

Dependencies

To enable this property, set ChannelFiltering to false.

Data Types: double

Data type of the generated path gains, specified as 'double' or 'single'. When you set ChannelFiltering to true, the object ignores this property and uses the data type of the input signal to set the data type of the path gains.

Dependencies

To enable this property, set ChannelFiltering to false.

Data Types: double

Usage

Description

example

signalOut = hst(signalIn) sends the input signal through an HST MIMO channel and returns the channel-impaired signal.

[signalOut,pathGains] = hst(signalIn) also returns the channel path gains.

[signalOut,pathGains,sampleTimes] = hst(signalIn) also returns the sample times of the channel snapshots of the path gains, pathGains.

example

[pathGains,sampleTimes] = hst() returns only the path gains and the sample times. The hst object acts as a source of the path gains and sample times without filtering an input signal. The NumTimeSamples property specifies the duration of the channel process and the OutputDataType property specifies the data type of the generated path gains. To use this syntax, you must 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 that must be constant across all object calls.

Data Types: single | double
Complex Number Support: Yes

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 is of the same precision as the input signal, signalIn.

Data Types: single | double
Complex Number Support: Yes

Channel path gains, 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.

  • NT is the number of transmit antennas.

  • NR is the number of receive antennas.

The path gains are of the same precision as the input signal, signalIn.

Data Types: single | double
Complex Number Support: Yes

Sample times of the channel snapshots of the path gains, pathGains, 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
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 an HST single-tap channel model.

hst = nrHSTChannel;
hst.ChannelProfile = 'HST';     

Set the distance between the gNodeBs to 300 m. Set the minimum distance between the railway track and the gNodeBs to 2 m.

hst.Ds = 300;                   
hst.Dmin = 2;

Set the train velocity to 300 km/h. Set the maximum Doppler shift to 750 Hz.

hst.Velocity = 300;             
hst.MaximumDopplerShift = 750; 

Create a random waveform of one subframe duration with one transmit antenna.

hst.SampleRate = 30.72e6;                   
T = hst.SampleRate * 1e-3; 
Nt = 1; 
txWaveform = complex(randn(T,Nt),randn(T,Nt));

Send the waveform through the channel.

rxWaveform = hst(txWaveform);

Create an HST-SFN multi-tap channel model with one receive antenna.

hst = nrHSTChannel( ...
    ChannelProfile='HST-SFN', ...
    NumReceiveAntennas=1);

Set the distance between the gNodeBs to 700 m. Set the minimum distance between the railway track and the gNodeBs to 150 m.

hst.Ds = 700;
hst.Dmin = 150;

Set the train velocity to 500 km/h. Set the maximum Doppler shift to 870 Hz.

hst.Velocity = 500;
hst.MaximumDopplerShift = 870;

Disable channel filtering.

hst.ChannelFiltering = false;

Set the sample rate and the number of channel samples to calculate 1 ms of path gains samples.

hst.SampleRate = 30.72e6;
hst.NumTimeSamples = hst.SampleRate*1e-3; 

Set the initial time of the channel to configure the starting position of the train. The train position relative to a remote gNodeB determines the delay of each gNodeB signal.

hst.InitialTime = (hst.Ds/3)/(hst.Velocity/3.6);

Retrieve the path gains from the channel.

pathGains = hst();

Obtain the channel path filter responses relative to the previous channel call. The delay of each gNodeB signal changes over time.

pathFilters = getPathFilters(hst); 

Estimate the channel delay by obtaining the timing offset.

offset = nrPerfectTimingEstimate(pathGains,pathFilters);

Display the path filters and the estimated channel delay.

plot(0:size(pathFilters,1)-1,pathFilters);
hold on
stem(repmat(offset,1,hst.NumTaps),pathFilters(1+offset,:),'k')
legend(["Tap "+ (1:hst.NumTaps) "Timing offset"])
xlabel('Filter Delay (Samples)') 
ylabel('Amplitude')
title('Impulse Response of Channel Filters')

Figure contains an axes object. The axes object with title Impulse Response of Channel Filters contains 5 objects of type line, stem. These objects represent Tap 1, Tap 2, Tap 3, Tap 4, Timing offset.

References

[1] 3GPP TS 38.101-4. “NR; User Equipment (UE) radio transmission and reception; Part 4: Performance requirements.” 3rd Generation Partnership Project; Technical Specification Group Radio Access Network.

[2] 3GPP TS 38.104. “NR; Base Station (BS) radio transmission and reception.” 3rd Generation Partnership Project; Technical Specification Group Radio Access Network.

Extended Capabilities

Version History

Introduced in R2022b