comm.RayTracingChannel

Filter signal through multipath fading channel defined by propagation rays

Description

The comm.RayTracingChannel System object™ filters a signal through a multipath fading channel that is defined by propagation rays.

To filter a signal through a fading channel defined by propagation rays:

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

rtchan = comm.RayTracingChannel creates a ray-tracing fading channel System object, which defines the multipath environment using a set of propagation rays.

example

rtchan = comm.RayTracingChannel(Name,Value) sets properties using one or more name-value pairs. Enclose each property name in quotes. For example, 'SampleRate',1e6 sets the sample rate to 1 MHz.

rtchan = comm.RayTracingChannel(rays,tx,rx) creates a ray-tracing fading channel System object given inputs rays, tx, and rx.

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.

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

Data Types: double

Propagation rays, specified as a comm.Ray object, a row vector of comm.Ray objects, or a row cell array of comm.Ray objects. This property specifies the propagation rays between the transmit and receive antenna arrays. All of the specified comm.Ray objects must have the same Frequency property setting. Any of the specified comm.Ray objects that have their PathSpecification property set to 'Locations', must have the same CoordinateSystem, TransmitterLocation, and ReceiverLocation property settings.

For code generation, the PropagationRays property must be a cell array of comm.Ray objects.

Data Types: comm.Ray object | cell

Transmit antenna array, specified as one of these options.

  • An arrayConfig object — You can adjust the Size property of the arrayConfig object to have it represent a uniform rectangular array (URA), uniform linear array (ULA), or single phased.IsotropicAntennaElement. The default configuration for an arrayConfig object is a 2-by-2 URA with an element spacing of 0.5 m.

  • A phased array antenna System object — If you have the Phased Array System Toolbox software, you can specify phased array antenna System object configurations. For a list of these additional supported values, see Phased Array Antenna Options.

Orientation axes of the transmit antenna array, specified as a 3-by-3 unitary matrix indicating the rotation from the local coordinate system (LCS) to the global coordinate system (GCS). If the comm.Ray objects defined in the PropagationRays property set the CoordinateSystem property to 'Geographic', the GCS is the East-North-Up (ENU) coordinate system at the transmitter.

Data Types: double

Receive antenna array, specified as one of these options.

  • An arrayConfig object — You can adjust the Size property of the arrayConfig object to have it represent a uniform rectangular array (URA), uniform linear array (ULA), or single phased.IsotropicAntennaElement. The default configuration for an arrayConfig object is a 2-by-2 URA with an element spacing of 0.5 m.

  • A phased array antenna System object — If you have the Phased Array System Toolbox software, you can specify phased array antenna System object configurations. For a list of these additional supported values, see Phased Array Antenna Options.

Orientation axes of the receive antenna array, specified as a 3-by-3 unitary matrix indicating the rotation from the LCS to the GCS. If the comm.Ray objects defined in the PropagationRays property set the CoordinateSystem to 'Geographic', the GCS is the East-North-Up (ENU) coordinate system at the receiver.

Data Types: double

Receive antenna array instantaneous velocity in the GCS in m/s, specified as a three element column vector of the form [x; y; z]. The elements of this vector specify x-, y-, and z-velocity, respectively. If the comm.Ray objects defined in the PropagationRays property set the CoordinateSystem to 'Geographic', the GCS is the East-North-Up (ENU) coordinate system at the receiver.

Data Types: double

Option to normalize channel impulse responses (CIRs), specified as a logical 1 (true) or 0 (false). Set this property to 1 (true) to normalize the gains of CIRs to 0 dB from each transmit array element to each receive array element.

Data Types: logical

Option to normalize channel outputs by the number of receive elements, specified as a logical 1 (true) or 0 (false). Set this property to 1 (true) to normalize the channel output by the number of receive array elements.

Data Types: logical

Usage

Description

y = rtchan(x) filters the input signal through a multipath fading channel defined by a set of propagation rays. When the channel filters the input signal, time zero is assigned to the ray with the minimum propagation delay. Arrival of other rays are delayed relative to time zero.

Input Arguments

expand all

Input signal, specified as an NS-by-NT matrix.

  • NS is the number of samples.

  • NT is the number of transmit array elements.

Data Types: single | double
Complex Number Support: Yes

Output Arguments

expand all

Output signal, returned as an NS-by-NR matrix.

  • NS is the number of samples.

  • NR is the number of receive array elements.

y is the same data type as input x.

Channel impulse response (CIR), returned as an NS-by-NP-by-NT-by-NR array.

  • NS is the number of samples.

  • NP is the number of paths (specifically, the number of rays as indicated by the length of the PropagationRays property).

  • NT is the number of transmit array elements.

  • NR is the number of receive array elements.

cir is the same data type as input x.

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 about ray-tracing channel
showProfilePlot temporal and spatial profiles of ray-tracing channel
cloneCreate duplicate System object
isLockedDetermine if System object is in use
stepRun System object algorithm
releaseRelease resources and allow changes to System object property values and input characteristics
resetReset internal states of System object

Examples

collapse all

Perform ray tracing between two sites in Hong Kong, China, build a multipath channel model using the ray-tracing result, and filter the signals through the channel.

Create a Site Viewer map display of buildings in Hong Kong. For more information about the osm file, see [1]. Create transmitter and receiver sites.

sv = siteviewer("Buildings","hongkong.osm");

tx = txsite("Latitude",22.2789,"Longitude",114.1625, ...
    "AntennaAngle",30,"AntennaHeight",10,"TransmitterFrequency",28e9);
rx = rxsite("Latitude",22.2799,"Longitude",114.1617, ...
    "AntennaAngle",120,"AntennaHeight",1);

Perform ray tracing to find rays with up to 2 reflections.

rays = raytrace(tx,rx,"NumReflections",[0 1 2]);

Create a channel model by using the transmitter site, receiver site, and calculated rays between the sites.

rtchan = comm.RayTracingChannel(rays{1},tx,rx);

Show temporal and spatial profiles of the ray-tracing channel.

showProfile(rtchan);

Filter a randomly generated 16-QAM signal through the channel.

modOrd = 16; % Modulation order
frmLen = 1e3; % Frame length
numTx = rtchan.info.NumTransmitElements;
x = qammod(randi([0,modOrd-1],frmLen,numTx),modOrd);
y = rtchan(x);

Show the filtered signal in a constellation diagram.

constdiag = comm.ConstellationDiagram("XLimits",[-5 5], ...
    "YLimits",[-5 5],"ReferenceConstellation", ...
    qammod(0:modOrd-1,modOrd));
constdiag(y);

Appendix

[1] The osm file is downloaded from https://www.openstreetmap.org, which provides access to crowd-sourced map data all over the world. The data is licensed under the Open Data Commons Open Database License (ODbL), https://opendatacommons.org/licenses/odbl/.

More About

expand all

Extended Capabilities

See Also

Objects

Functions

Introduced in R2020b