Main Content

RayTracing

Ray tracing propagation model

Since R2019b

Description

RayTracing objects are propagation models that compute propagation paths using 3-D environment geometry [1][2]. Represent a ray tracing model by using a RayTracing object.

This ray tracing model:

  • Is reasonable from 100 MHz to 100 GHz.

  • Computes multiple propagation paths. Other propagation models compute only single propagation paths.

  • Supports 3-D outdoor and indoor environments.

  • Determines the path loss and phase shift of each ray using electromagnetic analysis, including tracing the horizontal and vertical polarizations of a signal through the propagation path. The path loss calculations include free-space loss, reflection losses, and diffraction losses. For each reflection and diffraction, the model calculates losses on the horizontal and vertical polarizations by using the Fresnel equation, the Uniform Theory of Diffraction (UTD), the geometric angle, and the complex permittivity of the interface materials [3][4] at the specified frequency.

You can create ray tracing models that use either the shooting and bouncing rays (SBR) method or the image method.

Creation

Create a RayTracing object by using the propagationModel function.

Properties

expand all

Ray Tracing

Ray tracing method, specified as one of these values:

  • "sbr" — Use the shooting and bouncing rays (SBR) method, which supports up to ten path reflections and two edge diffractions. The SBR method calculates an approximate number of propagation paths with exact geometric accuracy. The SBR method is generally faster than the image method. The model calculates path loss from free-space loss, reflection and diffraction losses due to interactions with materials, and antenna polarizations.

  • "image" — Use the image method, which supports up to two path reflections. The image method calculates an exact number of propagation paths with exact geometric accuracy. The model calculates path loss from free-space loss plus reflection losses due to material and antenna polarizations.

Specify the maximum number of path reflections by using the MaxNumReflections property. Specify the maximum number of edge diffractions by using the MaxNumDiffractions property.

When both the image and SBR methods find the same path, the points along the path are the same within a tolerance of machine precision for single-precision floating-point values. For more information about differences between the image and SBR methods, see Choose a Propagation Model.

Data Types: char | string

Average number of degrees between launched rays, specified as "high", "medium", "low", or a numeric scalar in degrees in the range [0.05, 10]. If you specify a numeric value, then the ray tracing algorithm might use a lower value than the value you specify.

This table describes the behavior of the "high", "medium", and "low" options.

OptionApproximate Numeric EquivalentRange of Numeric ValuesNumber of Launched Rays
"high"1.0781[0.9912, 1.1845]40,962
"medium"0.5391[0.4956, 0.5923]163,842
"low"0.2695[0.2478, 0.2961]655,362

To improve the accuracy of the number of paths found by the SBR method, decrease the value of AngularSeparation. Decreasing the value of AngularSeparation increases the amount of time MATLAB® requires to perform the analysis.

When you first use a given value of AngularSeparation in a MATLAB session, MATLAB caches the geodesic sphere associated with that value for the duration of the session. As a result, the first use of that value of AngularSeparation takes longer than subsequent uses within the same session. For more information about geodesic spheres, see Shooting and Bouncing Rays Method.

Tips

When you perform ray tracing with diffractions or create coverage maps using the coverage function, you can speed up the calculations by choosing a lower angular separation and maximum number of reflections.

Dependencies

To enable this argument, the value of the Method property must be "sbr" (the default).

Data Types: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | char | string

Maximum number of path reflections to search for using ray tracing, specified as an integer. Supported values depend on the value of the Method property.

  • When Method is "image", supported values are 0, 1, and 2.

  • When Method is "sbr", supported values are in the range [0, 10].

Maximum number of edge diffractions to search for using ray tracing, specified as 0, 1, or 2.

When you use a RayTracing object as input to the coverage or sinr function, the value of this property must be 0 or 1.

Dependencies

To enable MaxNumDiffractions, the value of the Method property must be "sbr".

Maximum absolute path loss, in dB, specified as a positive numeric scalar. This property enables you to discard propagation paths based on an absolute threshold. For example, you can discard paths with more than 100 dB of path loss by specifying this property as 100. The default is Inf, which does not discard propagation paths based on absolute threshold.

The MaxAbsolutePathLoss and MaxRelativePathLoss properties work together. For a propagation path with path loss pl, the ray tracing model discards the path when pl is more than whichever is lower between MaxAbsolutePathLoss and MaxRelativePathLoss + plsr, where plsr is the path loss of the strongest ray.

Maximum relative path loss, in dB, specified as a nonnegative numeric scalar. This property enables you to discard propagation paths based on a threshold relative to the strongest ray. The default is 40, which discards paths that are more than 40 dB weaker than the strongest path.

The MaxRelativePathLoss and MaxAbsolutePathLoss properties work together. For a propagation path with path loss pl, the ray tracing model discards the path when pl is more than whichever is lower between MaxAbsolutePathLoss and MaxRelativePathLoss + plsr, where plsr is the path loss of the strongest ray.

Coordinate system of the site location, specified as "geographic" or "cartesian". If you specify "geographic", define material types by using the BuildingsMaterial and TerrainMaterial properties. If you specify "cartesian", define material types by using the SurfaceMaterial property.

Data Types: string | char

Buildings Material

Surface material of geographic buildings, specified as one of these values:

  • "auto" — Use building materials derived from the OpenStreetMap® file or geospatial table that specifies the scene. If the file or table does not specify materials, then use concrete for all the buildings. If the file or table specifies a material that the ray tracing analysis does not support, then use concrete instead of the unsupported material. When you import the file or table into Site Viewer, you can view the material names by querying the Materials property of the Site Viewer object. (since R2023b)

  • "concrete" — Concrete

  • "brick" — Brick

  • "wood" — Wood

  • "glass" — Glass

  • "metal" — Metal

  • "marble" — Marble (since R2024a)

  • "plywood" — Plywood (since R2024a)

  • "perfect-reflector" — Perfect electrical conductor

  • "custom" — Custom material. Specify the real relative permittivity and the conductivity of the material by using the BuildingsMaterialPermittivity and BuildingsMaterialConductivity properties.

The model uses the material type to calculate path loss involving interactions with building surfaces. For more information, see ITU Permittivity and Conductivity Values for Common Materials.

Dependencies

To enable BuildingsMaterial, the value of the CoordinateSystem property must be "geographic".

Data Types: char | string

Real relative permittivity of the surface materials of the buildings, specified as a nonnegative scalar. Real relative permittivity is expressed as the real part of the ratio of complex absolute material permittivity to the absolute permittivity of vacuum. The model uses this value to calculate path loss involving interactions with building surfaces. The default value corresponds to concrete at 1.9 GHz.

Dependencies

To enable BuildingsMaterialPermittivity, you must set the CoordinateSystem property to "geographic" and the BuildingsMaterial property to "custom".

Data Types: double

Conductivity of the surface materials of the buildings, specified as a nonnegative scalar in S/m. The model uses this value to calculate path loss involving interactions with building surfaces. The default value corresponds to concrete at 1.9 GHz.

Dependencies

To enable BuildingsMaterialConductivity, you must set the CoordinateSystem property to "geographic" and the BuildingsMaterial property to "custom".

Data Types: double

Terrain Material

Surface material of the geographic terrain, specified as one of these values:

  • "concrete" — Concrete

  • "brick" — Brick

  • "water" — Water

  • "vegetation" — Vegetation

  • "loam" — Loam

  • "marble" — Marble (since R2024a)

  • "perfect-reflector" — Perfect electrical conductor

  • "custom" — Custom material. Specify the real relative permittivity and the conductivity of the material by using the TerrainMaterialPermittivity and TerrainMaterialConductivity properties.

The model uses the material type to calculate path loss involving interactions with terrain surfaces. For more information, see ITU Permittivity and Conductivity Values for Common Materials.

Dependencies

To enable TerrainMaterial, you must set the CoordinateSystem property to "geographic".

Data Types: char | string

Real relative permittivity of the terrain material, specified as a nonnegative scalar. Real relative permittivity is expressed as the real part of the ratio of complex absolute material permittivity to the absolute permittivity of vacuum. The model uses this value to calculate path loss involving interactions with terrain surfaces. The default value corresponds to concrete at 1.9 GHz.

Dependencies

To enable TerrainMaterialPermittivity, you must set the CoordinateSystem property to "geographic" and the TerrainMaterial property to "custom".

Data Types: double

Conductivity of the terrain material, specified as a nonnegative scalar in S/m. The model uses this value to calculate path loss involving interactions with terrain surfaces. The default value corresponds to concrete at 1.9 GHz.

Dependencies

To enable TerrainMaterialConductivity, you must set the CoordinateSystem property to "geographic" and the TerrainMaterial property to "custom".

Data Types: double

Surface Material

Surface material of Cartesian map surface, specified as one of these values:

  • "auto" — Use surface materials derived from the file that specifies the scene. For glTF™ files, use materials derived from the file. If the file does not specify materials, or if the file specifies a material that the ray tracing analysis does not support, then use concrete instead of the absent or unsupported material. For STL files and triangulation objects, use concrete. When you import the file into Site Viewer, you can view the material names by querying the Materials property of the Site Viewer object. (since R2023b)

  • "concrete" — Concrete

  • "plasterboard" — Plasterboard

  • "ceilingboard" — Ceiling board

  • "chipboard" — Chipboard

  • "floorboard" — Floorboard

  • "brick" — Brick

  • "wood" — Wood

  • "glass" — Glass

  • "metal" — Metal

  • "marble" — Marble (since R2024a)

  • "plywood" — Plywood (since R2024a)

  • "water" — Water

  • "vegetation" — Vegetation

  • "loam" — Loam

  • "perfect-reflector" — Perfect electrical conductor

  • "custom" — Custom material. Specify the real relative permittivity and the conductivity of the material by using the SurfaceMaterialPermittivity and SurfaceMaterialConductivity properties.

The model uses the material type to calculate path loss involving interactions with surfaces. For more information, see ITU Permittivity and Conductivity Values for Common Materials.

Dependencies

To enable SurfaceMaterial, you must set the CoordinateSystem property to "cartesian".

Data Types: char | string

Real relative permittivity of the surface material, specified as a nonnegative scalar. Real relative permittivity is expressed as the real part of the ratio of complex absolute material permittivity to the absolute permittivity of vacuum. The model uses this value to calculate path loss involving interactions with surfaces. The default value corresponds to concrete at 1.9 GHz.

Dependencies

To enable SurfaceMaterialPermittivity, you must set the CoordinateSystem property to "cartesian" and the SurfaceMaterial property to "custom".

Data Types: double

Conductivity of the surface material, specified as a nonnegative scalar in S/m. The model uses this value to calculate path loss involving interactions with surfaces. The default value corresponds to concrete at 1.9 GHz.

Dependencies

To enable SurfaceMaterialConductivity, you must set the CoordinateSystem property to "cartesian" and the SurfaceMaterial property to "custom".

Data Types: double

Object Functions

pathlossPath loss of radio wave propagation
addAdd propagation models

Examples

collapse all

Show reflected propagation paths in Chicago by using the SBR and image methods.

Create a Site Viewer with buildings in Chicago. For more information about the OpenStreetMap® file, see [1].

viewer = siteviewer(Buildings="chicago.osm");

Create a transmitter site on a building and a receiver site near another building.

tx = txsite(Latitude=41.8800, ...
    Longitude=-87.6295, ...
    TransmitterFrequency=2.5e9);
show(tx)
rx = rxsite(Latitude=41.8813452, ...
    Longitude=-87.629771, ...
    AntennaHeight=30);
show(rx)

Create a ray tracing propagation model, which MATLAB® represents using a RayTracing object. Configure the model to use the image method and to calculate paths with up to one reflection. Then, display the propagation paths.

pm = propagationModel("raytracing",Method="image", ...
    MaxNumReflections=1);
raytrace(tx,rx,pm)

One propagation path from the transmitter site to the receiver site

For this ray tracing model, there is one propagation path from the transmitter to the receiver.

Update the ray tracing model to use the SBR method and to calculate paths with up to two reflections and up to one diffraction. Display the propagation paths.

pm.Method = "sbr";
pm.MaxNumReflections = 2;
pm.MaxNumDiffractions = 1;
raytrace(tx,rx,pm)

More propagation paths from the transmitter site to the receiver site

The updated ray tracing model shows more propagation paths from the transmitter to the receiver.

Appendix

[1] The OpenStreetMap 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/.

Launch Site Viewer with buildings in Chicago. For more information about the OpenStreetMap® file, see [1].

viewer = siteviewer(Buildings="chicago.osm");

Create a transmitter site on a building and a receiver site near another building.

tx = txsite(Latitude=41.8800, ...
    Longitude=-87.6295, ...
    TransmitterFrequency=2.5e9);
show(tx)

Create a ray tracing propagation model, which MATLAB® represents using a RayTracing object. Configure the model to find paths with up to 2 surface reflections and up to 1 edge diffraction. By default, the model uses the SBR method.

pm = propagationModel("raytracing", ...
    MaxNumReflections=2,MaxNumDiffractions=1);

Display the coverage map.

coverage(tx,pm,SignalStrengths=-100:5)

Site Viewer with buildings showing a transmitter site and coverage map

Appendix

[1] The OpenStreetMap 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/.

Ray tracing models enable you to discard propagation paths based on path loss thresholds.

  • Specify a threshold relative to the strongest propagation path by using the MaxRelativePathLoss property.

  • Specify an absolute threshold by using the MaxAbsolutePathLoss property.

Create a Site Viewer with buildings in Chicago. For more information about the OpenStreetMap® file, see [1].

viewer = siteviewer(Buildings="chicago.osm");

Create a transmitter site on a building and a receiver site near another building.

tx = txsite(Latitude=41.8800, ...
    Longitude=-87.6295, ...
    TransmitterFrequency=2.5e9);
show(tx)
rx = rxsite(Latitude=41.8813452, ...
    Longitude=-87.629771, ...
    AntennaHeight=30);
show(rx)

Create a ray tracing propagation model, which MATLAB represents using a RayTracing object. Configure the model to find paths with up to 2 surface reflections and up to 1 edge diffraction. By default, the model uses the SBR method.

pm = propagationModel("raytracing", ...
    MaxNumReflections=2, ...
    MaxNumDiffractions=1);

Perform the ray tracing analysis. By default, the model discard paths that are more than 40 dB weaker than the strongest path.

raytrace(tx,rx,pm,Type="pathloss")

Site Viewer with buildings showing multiple propagation paths from a transmitter site to a receiver site

Discard Paths Based on Relative Path Loss

Discard paths that are more than 50 dB weaker than the strongest path by changing the MaxRelativePathLoss property of the RayTracing object. Then, perform the ray tracing analysis again.

pm.MaxRelativePathLoss = 50;
raytrace(tx,rx,pm,Type="pathloss")

Additional propagation paths from the transmitter site to the receiver site

To avoid discarding propagation paths, set the MaxRelativePathLoss property to Inf.

pm.MaxRelativePathLoss = Inf;
raytrace(tx,rx,pm,Type="pathloss")

Additional propagation paths from the transmitter site to the receiver site

Discard Paths Based on Absolute Path Loss

Discard paths with more than 115 dB of path loss by setting the MaxAbsolutePathLoss property of the RayTracing object.

pm.MaxAbsolutePathLoss = 115;
raytrace(tx,rx,pm,Type="pathloss")

Four propagation paths from the transmitter site to the receiver site

Appendix

[1] The OpenStreetMap 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

References

[1] Yun, Zhengqing, and Magdy F. Iskander. “Ray Tracing for Radio Propagation Modeling: Principles and Applications.” IEEE Access 3 (2015): 1089–1100. https://doi.org/10.1109/ACCESS.2015.2453991.

[2] Schaubach, K.R., N.J. Davis, and T.S. Rappaport. “A Ray Tracing Method for Predicting Path Loss and Delay Spread in Microcellular Environments.” In [1992 Proceedings] Vehicular Technology Society 42nd VTS Conference - Frontiers of Technology, 932–35. Denver, CO, USA: IEEE, 1992. https://doi.org/10.1109/VETEC.1992.245274.

[3] International Telecommunications Union Radiocommunication Sector. Effects of Building Materials and Structures on Radiowave Propagation Above About 100MHz. Recommendation P.2040. ITU-R, approved August 23, 2023. https://www.itu.int/rec/R-REC-P.2040/en.

[4] International Telecommunications Union Radiocommunication Sector. Electrical Characteristics of the Surface of the Earth. Recommendation P.527. ITU-R, approved September 27, 2021. https://www.itu.int/rec/R-REC-P.527/en.

[5] International Telecommunications Union Radiocommunication Sector. Propagation by diffraction. Recommendation P.526-15. ITU-R, approved October 21, 2019. https://www.itu.int/rec/R-REC-P.526/en.

[6] Keller, Joseph B. “Geometrical Theory of Diffraction.” Journal of the Optical Society of America 52, no. 2 (February 1, 1962): 116. https://doi.org/10.1364/JOSA.52.000116.

Version History

Introduced in R2019b

expand all