RayTracing
Ray tracing propagation model
Description
Ray tracing models compute propagation paths using 3-D environment geometry [1][2] . Represent a ray tracing model by
using a RayTracing
object.
Ray tracing models:
Are valid from 100 MHz to 100 GHz.
Compute multiple propagation paths. Other propagation models compute only single propagation paths.
Support 3-D outdoor and indoor environments.
Determine 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 includes free-space loss and reflection losses. For each reflection, the model calculates losses on the horizontal and vertical polarizations by using the Fresnel equation, the incident angle, and the relative permittivity and conductivity of the surface material [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
Ray Tracing
Method
— Ray tracing method
"sbr"
(default) | "image"
Ray tracing method, specified as one of these values:
"sbr"
— Use the shooting and bouncing rays (SBR) method, which supports up to 10 path reflections. 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 plus reflection losses due to material and antenna polarizations."image"
— Use the image method, which supports up to 2 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.
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
AngularSeparation
— Average number of degrees between launched rays
"medium"
(default) | "high"
| "low"
| numeric scalar in degrees in the range [0.05, 10]
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.
Option | Approximate Numeric Equivalent | Range of Numeric Values | Number 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
can increase 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 creating coverage maps using the coverage
function, you can improve the results by choosing a lower angular separation.
Dependencies
To enable this argument, you must specify the Method
property
as "sbr"
.
Data Types: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| char
| string
MaxNumReflections
— Maximum number of path reflections
2
(default) | integer in the range [0,10]
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 are0
,1
, and2
.When
Method
is"sbr"
, supported values are in the range [0, 10].
Data Types: double
CoordinateSystem
— Coordinate system of map and site location
"geographic"
(default) | "cartesian"
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
BuildingsMaterial
— Surface material of geographic buildings
"concrete"
(default) | "perfect-reflector"
| "brick"
| "wood"
| "glass"
| "metal"
| "custom"
Surface material of geographic buildings, specified as one of these values:
"perfect-reflector"
, "concrete"
,
"brick"
, "wood"
, "glass"
,
"metal"
, or "custom"
. The model uses the
material type to calculate reflection loss where propagation paths reflect off of
building surfaces. For more information, see ITU Permittivity and Conductivity Values for Common Materials.
When BuildingsMaterial
is "custom"
,
specify the material permittivity and conductivity by using the BuildingsMaterialPermittivity
and BuildingsMaterialConductivity
properties.
Dependencies
To enable BuildingsMaterial
, you must set CoordinateSystem
to "geographic"
.
Data Types: char
| string
BuildingsMaterialPermittivity
— Relative permittivity of surface materials of buildings
5.31
(default) | nonnegative scalar
Relative permittivity of the surface materials of the buildings, specified as a nonnegative scalar. Relative permittivity is expressed as a ratio of absolute material permittivity to the permittivity of vacuum. The model uses this value to calculate path loss due to reflection. The default value corresponds to concrete at 1.9 GHz.
Dependencies
To enable BuildingsMaterialPermittivity
, you must set
CoordinateSystem
to "geographic"
and BuildingsMaterial
to "custom"
.
Data Types: double
BuildingsMaterialConductivity
— Conductivity of surface materials of buildings
0.0548
(default) | nonnegative scalar
Conductivity of the surface materials of the buildings, specified as a nonnegative scalar in siemens per meter (S/m). The model uses this value to calculate path loss due to reflection. The default value corresponds to concrete at 1.9 GHz.
Dependencies
To enable BuildingsMaterialConductivity
, you must set
CoordinateSystem
to "geographic"
and BuildingsMaterial
to "custom"
.
Data Types: double
Terrain Material
TerrainMaterial
— Surface material of geographic terrain
"concrete"
(default) | "perfect-reflector"
| "brick"
| "water"
| "vegetation"
| "loam"
| "custom"
Surface material of the geographic terrain, specified as one of these values:
"perfect-reflector"
, "concrete"
,
"brick"
, "water"
,
"vegetation"
, "loam"
, or
"custom"
. The model uses the material type to calculate
reflection loss where propagation paths reflect off of terrain surfaces. For more
information, see ITU Permittivity and Conductivity Values for Common Materials.
When TerrainMaterial
is "custom"
, specify
the material permittivity and conductivity by using the TerrainMaterialPermittivity
and TerrainMaterialConductivity
properties.
Dependencies
To enable TerrainMaterial
, you must set CoordinateSystem
to "geographic"
.
Data Types: char
| string
TerrainMaterialPermittivity
— Relative permittivity of terrain materials
5.31
(default) | nonnegative scalar
Relative permittivity of the terrain material, specified as a nonnegative scalar. Relative permittivity is expressed as a ratio of absolute material permittivity to the permittivity of vacuum. The model uses this value to calculate path loss due to reflection. The default value corresponds to concrete at 1.9 GHz.
Dependencies
To enable TerrainMaterialPermittivity
, you must set
CoordinateSystem
to "geographic"
and TerrainMaterial
to "custom"
.
Data Types: double
TerrainMaterialConductivity
— Conductivity of terrain materials
0.0548
(default) | nonnegative scalar
Conductivity of the terrain material, specified as a nonnegative scalar in siemens per meter (S/m). The model uses this value to calculate path loss due to reflection. The default value corresponds to concrete at 1.9 GHz.
Dependencies
To enable TerrainMaterialConductivity
, you must set
CoordinateSystem
to "geographic"
and set TerrainMaterial
to "custom"
.
Data Types: double
Surface Material
SurfaceMaterial
— Surface material of Cartesian map surface
"plasterboard"
(default) | "perfect-reflector"
| "ceilingboard"
| "chipboard"
| "floorboard"
| "concrete"
| "brick"
| "wood"
| "glass"
| "metal"
| "water"
| "vegetation"
| "loam"
| "custom"
Surface material of Cartesian map surface, specified as one of these values:
"plasterboard"
,"perfect-reflector"
,
"ceilingboard"
, "chipboard"
,
"floorboard"
, "concrete"
,
"brick"
, "wood"
, "glass"
,
"metal"
, "water"
,
"vegetation"
, "loam"
, or
"custom"
. The model uses the material type to calculate
reflection loss where propagation paths reflect off of surfaces. For more information,
see ITU Permittivity and Conductivity Values for Common Materials.
When SurfaceMaterial
is "custom"
, specify
the material permittivity and conductivity by using the SurfaceMaterialPermittivity
and SurfaceMaterialConductivity
properties.
Dependencies
To enable SurfaceMaterial
, you must set CoordinateSystem
to "cartesian"
.
Data Types: char
| string
SurfaceMaterialPermittivity
— Relative permittivity of surface materials
2.94
(default) | nonnegative scalar
Relative permittivity of the surface material, specified as a nonnegative scalar. Relative permittivity is expressed as a ratio of absolute material permittivity to the permittivity of vacuum. The model uses this value to calculate path loss due to reflection. The default value corresponds to plaster board at 1.9 GHz.
Dependencies
To enable SurfaceMaterialPermittivity
, you must set
CoordinateSystem
to "cartesian"
and SurfaceMaterial
to "custom"
.
Data Types: double
SurfaceMaterialConductivity
— Conductivity of surface materials
0.0183
(default) | nonnegative scalar
Conductivity of the surface material, specified as a nonnegative scalar in siemens per meter (S/m). The model uses this value to calculate path loss due to reflection. The default value corresponds to plaster board at 1.9 GHz.
Dependencies
To enable SurfaceMaterialConductivity
, you must set
CoordinateSystem
to "cartesian"
and set SurfaceMaterial
to "custom"
.
Data Types: double
Examples
Model Propagation Paths Using SBR and Image Methods
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 osm 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 model. Use the image method and calculate paths with up to one reflection. Then, display the propagation paths.
pm = propagationModel("raytracing","Method","image", ... "MaxNumReflections",1); raytrace(tx,rx,pm)
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. Display the propagation paths.
pm.Method = "sbr";
pm.MaxNumReflections = 2;
clearMap(viewer)
raytrace(tx,rx,pm)
The updated ray tracing model shows three propagation paths from the transmitter to the receiver.
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/.
Model Coverage Using Ray Tracing
Create a Site Viewer with buildings in Chicago. For more information about the .osm
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 model. By default, ray tracing models use the SBR method. Set the maximum number of reflections to 2
. Then, display the coverage map.
pm = propagationModel("raytracing","Method","sbr", ... "MaxNumReflections",2); coverage(tx,pm,"SignalStrengths",-100:5)
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
Shooting and Bouncing Rays Method
The shooting and bouncing rays (SBR) method finds an approximate number of propagation paths with exact geometric accuracy. You can use this method to find paths with up to 10 path reflections.
The computational complexity of the SBR method increases linearly with the number of reflections. As a result, the SBR method is generally faster than the image method.
This figure illustrates the SBR method for calculating propagation paths from a transmitter, Tx, to a receiver, Rx.
The SBR method launches many rays from a geodesic sphere centered at Tx. The geodesic sphere enables the model to launch rays that are approximately uniformly spaced.
Then, the method traces every ray from Tx and can model different types of interactions between the rays and surrounding objects, such as reflections, diffractions, refractions, and scattering. Note that the current implementation of the SBR method considers only reflections.
When a ray hits a flat surface, shown as R, the ray reflects based on the law of reflection.
When a ray hits an edge, shown as D, the ray spawns many diffracted rays based on the law of diffraction [5][6]. Each diffracted ray has the same angle with the diffracting edge as the incident ray. The diffraction point then becomes a new launching point and the SBR method traces the diffracted rays in the same way as the rays launched from Tx. A continuum of diffracted rays forms a cone around the diffracting edge, which is commonly known as a Keller cone [6]. The current implementation of the SBR method does not consider edge diffractions.
For each launched ray, the SBR method surrounds Rx with a sphere, called a reception sphere, with a radius that is proportional to the distance the ray travels and the average number of degrees between the launched rays. If the ray intersects the sphere, then the model considers the ray a valid path from Tx to Rx. The SBR method corrects the valid paths so that the paths have exact geometric accuracy.
When you increase the number of rays by decreasing the number of degrees between rays, the reception sphere becomes smaller. As a result, in some cases, launching more rays results in fewer or different paths. This situation is more likely to occur with custom 3-D scenarios created from STL files or triangulation objects than with scenarios that are automatically generated from OpenStreetMap® buildings and terrain data.
The SBR method finds paths using single-precision floating-point computations.
Image Method
The image method finds an exact number of propagation paths with exact geometric accuracy. You can use this method to find paths with up to 2 path reflections. The computational complexity of the image method increases exponentially with the number of reflections.
This figure illustrates the image method for calculating the propagation path of a single reflection ray for the same transmitter and receiver as the SBR method. The image method locates the image of Tx with respect to a planar reflection surface, Tx'. Then, the method connects Tx' and Rx with a line segment. If the line segment intersects the planar reflection surface, shown as R in the figure, then a valid path from Tx to Rx exists. The method determines paths with multiple reflections by recursively extending these steps. The image method finds paths using single-precision floating-point computations.
ITU Permittivity and Conductivity Values for Common Materials
ITU-R P.2040-1 [3] and ITU-R P.527-5 [4] present methods, equations, and values used to calculate real relative permittivity, conductivity, and complex relative permittivity for common materials.
For information about the values computed for building materials specified in ITU-R P.2040-1, see
buildingMaterialPermittivity
.For information about the values computed for terrain materials specified in ITU-R P.527-5, see
earthSurfacePermittivity
.
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-1. ITU-R, approved July 29, 2015. https://www.itu.int/rec/R-REC-P.2040-1-201507-I/en.
[4] International Telecommunications Union Radiocommunication Sector. Electrical characteristics of the surface of the Earth. Recommendation P.527-5. ITU-R, approved August 14, 2019. https://www.itu.int/rec/R-REC-P.527-5-201908-I/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-15-201910-I/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 R2019bR2022b: Customize spacing of launched rays for ray tracing with SBR method
When performing ray tracing using the SBR method, you can customize the spacing of
launched rays by specifying the AngularSeparation
property of the
RayTracing
object as a numeric value in degrees. In previous releases,
the AngularSeparation
property supported only the options
"high"
, "medium"
, and
"low"
.
R2022b: SBR method calculates propagation paths with exact geometric accuracy
When you find propagation paths using the SBR method, MATLAB corrects the results so that the geometric accuracy of each path is exact. In previous releases, the paths have approximate geometric accuracy.
R2021b: Default modeling method is shooting and bouncing rays method
Starting in R2021b, when you create a propagation model using the syntax
propagationModel("raytracing")
, MATLAB returns a RayTracing
model with the
Method
value set to "sbr"
and two reflections
(instead of "image"
and one reflection, as in previous releases).
To create ray tracing propagation models that use the image method, use the syntax
propagationModel("raytracing","Method","image")
.
See Also
Functions
propagationModel
|raytrace
|coverage
|sigstrength
|buildingMaterialPermittivity
|earthSurfacePermittivity
Objects
Beispiel öffnen
Sie haben eine geänderte Version dieses Beispiels. Möchten Sie dieses Beispiel mit Ihren Änderungen öffnen?
MATLAB-Befehl
Sie haben auf einen Link geklickt, der diesem MATLAB-Befehl entspricht:
Führen Sie den Befehl durch Eingabe in das MATLAB-Befehlsfenster aus. Webbrowser unterstützen keine MATLAB-Befehle.
Select a Web Site
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: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)