メインコンテンツ

raytrace

RF 伝播光線の表示または計算

説明

関数 raytrace は、引数 Map で定義された表面のジオメトリでレイ トレーシングを使用して、伝播パスをプロットまたは計算します。関数は、送信機サイトから受信機サイトまでの受信電力 (dBm) またはパス損失 (dB) に応じて、各伝播パスを色分けします。レイ トレーシング解析には表面反射とエッジ回折が含まれますが、コーナー回折、屈折、または拡散散乱の効果は含まれません。この関数は 100 MHz ~ 100 GHz の周波数をサポートします。詳細については、伝播モデルの選択を参照してください。

raytrace(tx,rx) は、送信機サイト tx から受信機サイト rx までの伝播パスを現在のサイト ビューアーで表示します。既定では、関数は Shooting and Bounicng Rays (SBR) 法を使用し、最大 2 回の反射と 0 回の回折を伴うパスを検出し、最も強いパスより 40 dB を超えて弱いパスを破棄します。

raytrace(tx,rx,propmodel) は、レイ トレーシング伝播モデル propmodel を使用して伝播パスを検出します。レイ トレーシング伝播モデルを使用すると、反射と回折の最大数、パス損失のしきい値、建物と地形の材料などのプロパティを指定することができます。関数 propagationModel を使用して、レイ トレーシング伝播モデルを作成します。

raytrace(___,Name=Value) は、前の構文にある任意の入力の組み合わせに加えて、1 つ以上の名前と値の引数を使用してオプションを指定します。

rays = raytrace(___) は、rays の伝播パスを返します。

すべて折りたたむ

レイ トレーシング伝播モデルを使用して、シカゴでの反射伝播パスを表示します。

シカゴの建物を指定してサイト ビューアーを起動します。OpenStreetMap® ファイルの詳細については、[1] を参照してください。

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

2 つの異なる建物の近くに送信機サイトと受信機サイトを作成します。

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)

見通し内パス上の障害物を表示します。

los(tx,rx)

Obstructed line-of-sight path from the transmitter site to the receiver site. The path is green from the transmitter to the building, and red from the building to the receiver.

反射を伴う伝播パスを表示します。既定では、関数 raytrace は SBR 法を使用し、最大 2 回の反射を伴う伝播パスを計算します。

raytrace(tx,rx)

Three propagation paths from the transmitter site to the receiver site

付録

[1] OpenStreetMap ファイルは、クラウドソーシングによる世界中の地図データへのアクセスを提供する https://www.openstreetmap.org からダウンロードされたものです。このデータは Open Data Commons Open Database License (ODbL) https://opendatacommons.org/licenses/odbl/ によりライセンスされています。

シカゴの建物を指定してサイト ビューアーを起動します。OpenStreetMap® ファイルの詳細については、[1] を参照してください。

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

Site Viewer with buildings

建物の上に送信機サイトを作成します。

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

別の建物の近くに受信機サイトを作成します。

rx = rxsite(Latitude=41.881352, ...
    Longitude=-87.629771, ...
    AntennaHeight=30);

レイ トレーシング伝播モデルを作成します。MATLAB® は、RayTracing オブジェクトを使用してこのモデルを表現します。既定では、伝播モデルは SBR 法を使用し、最大 2 回の表面反射を伴う伝播パスを検出します。

pm = propagationModel("raytracing");

受信機サイト、送信機サイト、および伝播モデルを使用して信号強度を計算します。

ssTwoReflections = sigstrength(rx,tx,pm)
ssTwoReflections = 
-54.3151

伝播パスをプロットします。

raytrace(tx,rx,pm) 

Three propagation paths from the transmitter site to the receiver site

RayTracing オブジェクトを変更して、最大 5 回の反射を伴うパスを検出します。次に、信号強度を再計算します。

pm.MaxNumReflections = 5;
ssFiveReflections = sigstrength(rx,tx,pm)
ssFiveReflections = 
-53.3965

RayTracing オブジェクトは、既定で、地形の材料としてコンクリートを使用し、建物の材料として OpenStreetMap ファイルから取得した材料を使用します。OpenStreetMap ファイルで材料が指定されていない場合、モデルはコンクリートを使用します。建物と地形の材料タイプを変更して、完全な電気伝導体をモデル化します。

pm.TerrainMaterial = "PEC";
pm.BuildingsMaterial = "PEC";

ssPerfect = sigstrength(rx,tx,pm)
ssPerfect = 
-38.9334

更新された伝播モデルの伝播パスをプロットします。

raytrace(tx,rx,pm)

Additional propagation paths from the transmitter site to the receiver site

付録

[1] OpenStreetMap ファイルは、クラウドソーシングによる世界中の地図データへのアクセスを提供する https://www.openstreetmap.org からダウンロードされたものです。このデータは Open Data Commons Open Database License (ODbL) https://opendatacommons.org/licenses/odbl/ によりライセンスされています。

香港の建物を指定してサイト ビューアーを起動します。OpenStreetMap® ファイルの詳細については、[1] を参照してください。

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

Site Viewer with buildings

密集した都市環境の小さいセル シナリオをモデル化する送信機サイトと受信機サイトを作成します。

tx = txsite(Name="Small cell transmitter", ...
    Latitude=22.2789, ...
    Longitude=114.1625, ...
    AntennaHeight=10, ...
    TransmitterPower=5, ...
    TransmitterFrequency=28e9);
rx = rxsite(Name="Small cell receiver", ...
    Latitude=22.2799, ...
    Longitude=114.1617, ...
    AntennaHeight=1);

レイ トレーシング伝播モデルを作成します。MATLAB は、RayTracing オブジェクトを使用してこのモデルを表現します。発射された光線間で低い平均角度を使用し、最大 5 つのパス反射を伴うパスを検出し、完全な電気伝導体をモデル化する建物と地形の材料タイプを使用するようにモデルを構成します。既定では、モデルは SBR 法を使用します。

pm = propagationModel("raytracing", ...
    MaxNumReflections=5, ...
    AngularSeparation="low", ...
    BuildingsMaterial="PEC", ...
    TerrainMaterial="PEC");

伝播パスを可視化し、対応するパス損失を計算します。

raytrace(tx,rx,pm,Type="pathloss")
raysPerfect = raytrace(tx,rx,pm,Type="pathloss");
plPerfect = [raysPerfect{1}.PathLoss]
plPerfect = 1×13

  104.2656  103.5699  112.0092  109.3137  111.2840  111.9979  112.4416  108.1505  111.2825  111.3905  117.7506  116.5906  117.7638

Propagation paths from the transmitter site to the receiver site

建物と地形の材料タイプをそれぞれガラスとコンクリートに設定します。次に、伝播パスを再び可視化し、対応するパス損失を再計算します。既定では、モデルは最も強いパスより 40 デシベルを超えて弱いパスを破棄するため、モデルは 1 つ少ないパスを検出します。最初のパス損失値は、見通し内伝播パスに対応しているため、変わっていません。

pm.BuildingsMaterial = "glass";
pm.TerrainMaterial = "concrete";

raytrace(tx,rx,pm,Type="pathloss")
raysMtrls = raytrace(tx,rx,pm,Type="pathloss");
plMtrls = [raysMtrls{1}.PathLoss]
plMtrls = 1×12

  104.2656  106.1249  119.2135  121.2269  122.3753  121.5228  126.8929  124.1284  122.7842  127.4910  138.9922  140.4998

Updated propagation paths from the transmitter site to the receiver site

雨と気体の伝播モデルをレイ トレーシング モデルに追加して、大気損失を組み込みます。次に、伝播パスを再び可視化し、対応するパス損失を再計算します。

pm = pm + propagationModel("rain") + propagationModel("gas");

raytrace(tx,rx,pm,Type="pathloss")
raysAtmospheric = raytrace(tx,rx,pm,Type="pathloss");
plAtmospheric = [raysAtmospheric{1}.PathLoss]
plAtmospheric = 1×12

  105.3245  107.1846  121.7988  123.1224  124.9622  124.1119  129.6107  126.0247  125.3746  130.2090  142.9753  144.4831

Updated propagation paths from transmitter site to receiver site

付録

[1] OpenStreetMap ファイルは、クラウドソーシングによる世界中の地図データへのアクセスを提供する https://www.openstreetmap.org からダウンロードされたものです。このデータは Open Data Commons Open Database License (ODbL) https://opendatacommons.org/licenses/odbl/ によりライセンスされています。

この例では、以下の方法を説明します。

  • モデルがメートルの単位を使用するための STL ファイルのスケーリング。

  • サイト ビューアーでのスケーリング モデルの表示。

  • レイ トレーシングを使用した、送信機から受信機までの伝播パスの計算と表示。

直交 txsite オブジェクトおよび直交 rxsite オブジェクトはメートル単位の位置座標を必要としますが、STL ファイルでは他の単位を使用することができます。STL ファイルがメートルを使用していない場合は、サイト ビューアーにインポートする前にモデルをスケーリングしなければなりません。

STL ファイルをインポートして表示します。このファイルはテーブル 1 台と椅子が 4 脚ある小さい会議室をモデル化したものです。名前と値の引数 SceneModelScale を指定して、モデルをスケーリングします。この例では、STL 単位からメートルへの変換係数が 0.9 であると仮定しています。

viewer = siteviewer(SceneModel="conferenceroom.stl",SceneModelScale=0.9);

Site Viewer with conference room model

R2023b より前: 関数 stlread を使用してモデルを triangulation オブジェクトに読み取り、座標をスケーリングして新しい triangulation オブジェクトを作成してから、新しい triangulation オブジェクトをサイト ビューアーに読み取ります。

送信機サイトを壁の近くに、受信機サイトをテーブルの下に作成して表示します。直交座標を使用してメートル単位で位置を指定します。

tx = txsite("cartesian", ...
    AntennaPosition=[-1.25; -1.25; 1.9], ...
    TransmitterFrequency=2.8e9);
show(tx,ShowAntennaHeight=false) 

rx = rxsite("cartesian", ...
    AntennaPosition=[0.3; 0.2; 0.5]);
show(rx,ShowAntennaHeight=false)

パンするには左クリックします。ズームするには右クリックまたはスクロール ホイールを使用します。表示を回転させるには、中央ボタンをクリックしてドラッグするか、"Ctrl" を押しながら左クリックしてドラッグします。

The same Site Viewer with a transmitter site and receiver site

直交座標のレイ トレーシング伝播モデルを作成します。これは、MATLAB が RayTracing オブジェクトを使用して表現します。最大 1 回の反射と 1 回の回折を伴う光線を計算します。表面材料を木に設定します。既定では、モデルは SBR 法を使用します。

pm = propagationModel("raytracing", ...
    CoordinateSystem="cartesian", ....
    MaxNumReflections=1, ...
    MaxNumDiffractions=1, ...
    SurfaceMaterial="wood"); 

伝播パスを計算し、結果を comm.Ray オブジェクトの cell 配列として返します。光線を抽出してプロットします。

r = raytrace(tx,rx,pm);
r = r{1};
plot(r)

光線をクリックして、光線に関する情報を表示します。

Propagation paths between the transmitter site and receiver site. A legend shows information about a propagation path.

R2023b 以降

RoadRunner を使用して作成された glTF™ ファイルから 3 次元モデルを表示します。RoadRunner は、自動運転システムをシミュレートおよびテストするための 3 次元シーンを設計できる対話型エディターです。

サンプルの glTF ファイルを保存するための一時フォルダーを作成します。downloadGLTFFile 補助関数を使用し、ファイルをフォルダーにダウンロードします。この補助関数は、この例にサポート ファイルとして添付されています。

dataDir = fullfile(tempdir,"IntersectionAndBuildings");
if ~exist(dataDir,"dir")
    mkdir(dataDir)
end
downloadGLTFFile(dataDir)
Downloading glTF file.
Done.

バイナリ ファイルの名前を指定します。次に、サイト ビューアーを使用し、glTF ファイルをインポートして表示します。サイト ビューアーは、ファイルに保存されている色とテクスチャを使用してモデルを表示します。

filename = fullfile(dataDir,"IntersectionAndBuildings.glb");
viewer = siteviewer(SceneModel=filename,ShowEdges=false,ShowOrigin=false);

A city intersection with brick and concrete buildings

サイト ビューアーは、ファイルに保存されている各材料名を、サポートされている材料名と照合することで、シーン内の表面に材料を割り当てます。材料および照合で一致した材料のサブセットを表示します。既定では、レイ トレーシング解析関数は変数 MatchedCatalogMaterial に格納されている材料を使用します。

viewer.Materials(1:5,:)
ans=5×2 table
       Material       MatchedCatalogMaterial
    ______________    ______________________

    "Metal_Trim"            "metal"         
    "Glass"                 "glass"         
    "Stone_Trim"            "marble"        
    "Roof_Asphalt"          "concrete"      
    "Bricks_Red"            "brick"         

建物の上に送信機サイトを作成し、建物群の後ろに受信機サイトを作成します。直交座標を使用してメートル単位で位置を指定します。

tx = txsite("cartesian",AntennaPosition=[18;38;22]);
rx = rxsite("cartesian",AntennaPosition=[-40;-35;1]);

直交座標のレイ トレーシング伝播モデルを作成します。これは、MATLAB® が RayTracing オブジェクトを使用して表現します。最大 2 回の反射 (既定) と 1 回の回折を伴う伝播パスを検出するようにモデルを構成します。

pm = propagationModel("raytracing", ...
    CoordinateSystem="cartesian", ...
    MaxNumDiffractions=1);

伝播パスを計算し、結果を comm.Ray オブジェクトの cell 配列として返します。cell 配列から伝播パスを抽出します。

rays = raytrace(tx,rx,pm);
rays = rays{1};

送信機サイト、受信機サイト、および伝播パスを表示します。

show(tx)
show(rx)
plot(rays)

パスをクリックして、パスに関する情報を表示します。相互作用する材料が情報ボックスに表示されます。

Multiple propagation paths. An information box shows information about one of the paths. The path interacts with metal, glass, and vegetation materials.

入力引数

すべて折りたたむ

送信機サイト。txsite オブジェクトまたは txsite オブジェクトの配列として指定します。配列を指定した場合、関数は各送信機から各受信機サイトへの伝播パスをプロットします。

受信機サイト。rxsite オブジェクト、または rxsite オブジェクトの配列として指定します。配列を指定した場合、関数は各送信機から各受信機サイトへの伝播パスをプロットします。

レイ トレーシング伝播モデル。"raytracing" または RayTracing オブジェクトとして指定します。既定は "raytracing" で、SBR 法を使用し、最大 2 回の反射を伴い、かつ 0 回の回折を伴うパスを検出し、最も強いパスより 40 dB を超えて弱いパスを破棄します。

関数 propagationModel を使用して RayTracing オブジェクトを作成します。RayTracing オブジェクトを使用すると、レイ トレーシング手法、反射と回折の最大数、パス損失のしきい値、建物と地形の材料などのプロパティを指定することができます。

レイ トレーシング手法の違いの詳細については、伝播モデルの選択を参照してください。

データ型: char | string

名前と値の引数

すべて折りたたむ

オプションの引数のペアを Name1=Value1,...,NameN=ValueN として指定します。ここで、Name は引数名で、Value は対応する値です。名前と値の引数は他の引数の後に指定しなければなりませんが、ペアの順序は重要ではありません。

例: raytrace(tx,rx,Type="pathloss") は、パス損失に基づいてパスを色分けします。

R2021a より前では、コンマを使用して名前と値をそれぞれ区切り、Name を引用符で囲みます。

例: raytrace(tx,rx,"Type","pathloss") は、パス損失に基づいてパスを色分けします。

プロットする量のタイプ。次のオプションのいずれかとして指定します。

  • "power" — dBm 単位の受信電力に基づいてパスを色分けします。

  • "pathloss" — dB 単位のパス損失に基づいてパスを色分けします。

関数は、次の Friis 伝達方程式の変更したバージョンを使用して、受信電力 (対数単位) を計算します。

Prx=Ptx+Gtx+GrxLLtxLrx

ここで、

  • Prx は、受信機での受信電力。

  • Ptx は、送信機サイトの TransmitterPower プロパティで指定された送信電力。

  • Gtx は、発射角 (AoD) の方向における送信機サイトの絶対アンテナ ゲイン。

  • Grx は、到達角度 (AoA) 方向における受信機サイトの絶対アンテナ ゲイン。

  • L は、送信機サイトと受信機サイトの間のパス損失。

  • Ltx は、送信機サイトの SystemLoss プロパティで指定されたシステム損失。

  • Lrx は、受信機サイトの SystemLoss プロパティで指定されたシステム損失。

データ型: char | string

伝播モデル。"raytracing" または RayTracing オブジェクトとして指定します。既定は "raytracing" で、SBR 法を使用し、最大 2 回の反射を伴い、かつ 0 回の回折を伴うパスを検出し、最も強いパスより 40 dB を超えて弱いパスを破棄します。

関数 propagationModel を使用して RayTracing オブジェクトを作成します。RayTracing オブジェクトを使用すると、レイ トレーシング手法、反射と回折の最大数、パス損失のしきい値、建物と地形の材料などのプロパティを指定することができます。

レイ トレーシング手法の違いの詳細については、伝播モデルの選択を参照してください。

データ型: char | string

カラーマップの色の範囲。[min max] の形式の 2 要素の数値行ベクトルとして指定します。

単位と既定値は Type の値によって異なります。

  • "power"– 単位は dBm で、既定値は [-120 -5] です。

  • "pathloss"– 単位は dB で、既定値は [45 160] です。

色の範囲は、カラーマップの最初と最後の色にマッピングされる値を示します。この関数は、色の範囲の最小値より小さい値の伝播パスをプロットしません。

データ型: double

伝播パスの色付け用のカラーマップ。カラーマップ名として指定するか、M 個の個別の色を定義する RGB 3 成分から成る M 行 3 列の配列として指定します。カラーマップ名の詳細については、colormap を参照してください。

データ型: char | string | double

サイト ビューアーでの色の凡例の表示。数値または logical の 1 (true) または 0 (false) として指定します。

可視化または表面データのマップ。siteviewer オブジェクト、triangulation オブジェクト、string スカラー、文字ベクトルのいずれかとして指定します。有効な既定値は、座標系に応じて異なります。

座標系有効なマップ値既定のマップ値
"geographic"
  • siteviewer オブジェクト a

  • 出力引数の指定がある関数が呼び出された場合の地形名。有効な地形名は、"none""gmted2010"、または addCustomTerrain を使用して追加したカスタム地形データの名前です。

  • 現在の siteviewer オブジェクト。何も開いていない場合は新しい siteviewer オブジェクト

  • 出力を指定して関数が呼び出された場合は "gmted2010"

"cartesian"
  • "none"

  • siteviewer オブジェクト

  • glTF™ ファイルの名前

  • STL ファイルの名前

  • triangulation オブジェクト

  • "none"

a Alignment of boundaries and region labels are a presentation of the feature provided by the data vendors and do not imply endorsement by MathWorks®.

ほとんどの場合、この引数を siteviewer"none" 以外の値として指定した場合は出力引数も指定しなければなりません。

データ型: char | string

出力引数

すべて折りたたむ

光線の構成。comm.Ray オブジェクトの MN 列の cell 配列として返されます。ここで、M は送信機サイトの数、N は受信機サイトの数です。各 cell 要素は、対応する送信機サイトと受信機サイトの間で見つかった伝播パス (光線) を表す comm.Ray オブジェクトの行ベクトルです。

各行ベクトル内で、関数は comm.Ray オブジェクトを最初の交互作用タイプによってアルファベット順に並べ替えます。複数の光線で最初の交互作用タイプが同じである場合、関数は 2 番目の交互作用タイプに従って並べ替え、後続の重複する交互作用タイプに対してこの動作を繰り返します。複数の comm.Ray オブジェクトが同じ数と種類の交互作用を同じ順序でもつ場合、関数は伝播距離の長い順にオブジェクトを並べ替えます。見通し内パスが存在する場合、関数はそれを最初の要素として含めます。

参照

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

[2] 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.

[3] Mohr, Peter J., Eite Tiesinga, David B. Newell, and Barry N. Taylor. “Codata Internationally Recommended 2022 Values of the Fundamental Physical Constants.” NIST, May 8, 2024. https://www.nist.gov/publications/codata-internationally-recommended-2022-values-fundamental-physical-constants.

拡張機能

すべて展開する

バージョン履歴

R2019b で導入

すべて展開する