How do I interpret path loss outputs for raytracing signal propagation environments?

4 ビュー (過去 30 日間)
Alex B
Alex B 2024 年 1 月 19 日
コメント済み: vidyesh 2024 年 1 月 23 日
I'm attempting to use the RF Propagation Toolbox to model signal propagation in an urban environment, and currently I'm trying to benchmark the results this model produces against the literautre.
My current setup has two transmitters with direct line of sight to a single receiver at ~350m distance. When I set my propagation model to raytracing and use pathloss() I get a 1x2 cell array where one cell contains 3 values and the other contains 2 - this is where I'm confused; the documentation says I should get a 1x2 cell array with 2 values per cell (the path loss to the other two antennas). Where is this 3rd value coming from?
Example code: (I'm using an OpenStreetMap model of the University of Maryland, College Park campus which I don't know how to attach here)
% set antenna coordinates to be the east and west ends of McKeldin mall
tx1coords = [38.986700, -76.940278];
tx2coords = [38.985556, -76.940278];
rx1coords = [38.985833, -76.944167];
% register antennas
tx1 = txsite("Name", "McKeldin North Tx", ...
"Latitude", tx1coords(1), "Longitude", tx1coords(2), 'TransmitterFrequency', 2e8);%4e7
tx2 = txsite("Name", "McKeldin South Tx", ...
"Latitude", tx2coords(1), "Longitude", tx2coords(2), 'TransmitterFrequency', 2e8);
rx1 = rxsite("Name", "McKeldin Steps Rx", ...
"Latitude", rx1coords(1), "Longitude", rx1coords(2));
fprintf("Antenna sites built! \n")
% use a non free space terrain model
terrainModel = 'gmted2010';
% buildings
fprintf("Setting up 3D environment, this may take time... \n")
% https://www.mathworks.com/help/antenna/ref/siteviewer.html#mw_69390516-4cc4-43fb-abc0-6724ba77037e
% load osm data for college park
buildings = readgeotable("cpmd.osm",Layer="buildingparts");
% setup material dict
% this is a stock dict, this version of the cpmd osm use default material
materials = ["","brick","concrete","copper","glass","metal","plaster","stone"];
colors = ["#D3D3D3","#AA4A44","#D3D3D3","#B87333","#35707E","#151513","#FFFFFF","#301934"];
dict = dictionary(materials,colors);
% apply material properties (color in this case) to map
numBuildings = height(buildings);
for n = 1:numBuildings
material = buildings.Material(n);
buildings.Color(n) = dict(material);
end
% render site viewer with buildings and generate SINR map for smapling
viewer1 = siteviewer(Terrain=terrainModel,Name="Site Viewer (GMTED2010)", Buildings=buildings);
tx1.show(); tx2.show(); rx1.show();
fprintf("Building SINR map... \n")
sinr([tx1, tx2])
fprintf("Site build complete in " + toc + "sec \n")
% set propagation model
pm = propagationModel("raytracing");
% build path loss matrix
gammaPL = pathloss(pm,rx1,[tx1, tx2])
This code has the following output:
gammaPL =
2×1 cell array
{[69.3606 79.1522 84.4331]}
{[ 69.0560 84.3759]}
This behavior seems to persist even if I remove the line of sight between transmitters and antennas. For example, running the same code above but with the change:
tx1coords = [38.988700, -76.940278];
Which places tx1 inside a building to the north.
Leads to the output:
gammaPL =
2×1 cell array
{[71.7899 72.0462]}
{[ 69.0560]}
And I'm still not sure why the cells aren't dimensioned the same.

回答 (1 件)

vidyesh
vidyesh 2024 年 1 月 22 日
Hi Alex,
The 1x2 cell array returned by the 'pathloss' function is a result of having two transmitters (tx1 and tx2) and one receiver (rx1). Each cell in the array corresponds to one transmitter-receiver pair, containing the path loss value of all the propagation paths between them. These paths include both the line-of-sight (LOS) and any reflected paths.
To visualize the propagation paths, you can use the following code snippet:
raytrace([tx1, tx2], rx1, pm);
In the above code, 'pm' represents your propagation model. To control the number of reflected paths, you can adjust properties such as 'MaxNumReflections', 'MaxAbsolutePathLoss', and 'MaxRelativePathLoss' within the propagation model.
For more detailed information on the propagation model and to see an example, please visit the MATLAB documentation page for ray tracing:
Refer to the below links for detailed information on the propagation model and the example given in it.
Hope this helps.
  2 件のコメント
Alex B
Alex B 2024 年 1 月 22 日
I get that, but why does one cell has 3 entries and the other have 2? Is each entry the path loss corresponding to one transmission path? If so, why does it consistently find three transmission paths for one antenna but only 2 for the other?
vidyesh
vidyesh 2024 年 1 月 23 日
Indeed, each entry represents the 'path loss' for a distinct transmission path.
The phenomenon, where one cell has three entries (paths) and the other has only two, is influenced by location of the antennas and the physical environment in which the antennas are operating
In this case, it appears that the antenna with three paths is in a situation where the environment allows for an additional reflection path.
For a more comprehensive understanding, you can refer to the example provided in the MathWorks documentation, which demonstrates how properties of the propagation model can influence the number of multipaths. The section titled "Discard Paths Based on Path Loss" within the documentation for the raytracing objects in the Communications Toolbox provides an example:

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeRF Propagation についてさらに検索

製品


リリース

R2023b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by