Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

raytrace

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

説明

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

raytrace(tx,rx) は、最大 2 回の反射で Shooting and Bounicng Rays (SBR) 法を使用して、送信機サイト (tx) から受信機サイト (rx) への伝播パスを現在のサイト ビューアーで表示します。

raytrace(tx,rx,propmodel) は、指定された伝播モデルに基づいて、送信機サイト (tx) から受信機サイト (rx) への伝播パスを表示します。パス損失を計算するために建物と地形の材料を入力するには、関数 propagationModel を使用して 'raytracing' 伝播モデルを作成し、プロパティを設定して建物の材料を指定します。

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

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

すべて折りたたむ

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

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

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

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

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)

最大 2 回の反射でレイ トレーシングを使用して、反射伝播パスを表示します。

raytrace(tx,rx)

付録

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

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

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

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

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

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

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

レイ トレーシング伝播モデルを使用して信号強度を計算します。既定では、レイ トレーシング モデルは SBR 法を使用し、見通し内の 2 回反射の解析を実行します。

pm = propagationModel("raytracing");
ssTwoReflections = sigstrength(rx,tx,pm)
ssTwoReflections = -52.4056

最大 2 回の反射で SBR の伝播パスをプロットします。

raytrace(tx,rx,pm) 

最大 2 回の反射を解析して信号強度を計算します。ここで、受信電力の合計は、すべての伝播パスの累積電力です。

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

既定のコンクリート材料を完全反射体に置き換えることにより、材料の影響を観察します。

pm.BuildingsMaterial = 'perfect-reflector';
ssPerfect = sigstrength(rx,tx,pm)
ssPerfect = -38.8614

最大 5 回の反射で SBR の伝播パスをプロットします。

raytrace(tx,rx,pm)

付録

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

香港の材料反射と大気によるパス損失。最大 5 回の反射で Shooting and Bouncing Rays (SBR) 法を使用するようにレイ トレーシングを構成します。

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

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

送信機サイトと受信機サイトを定義して、込み合った都市環境の小さいセル シナリオをモデル化します。

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);

最大 5 回の反射で完全反射のレイ トレーシング伝播モデルを作成します。レイ トレーシング手法を Shooting and Bouncing Rays (SBR) として指定します。

pm = propagationModel("raytracing", ...
    "Method","sbr", ...
    "AngularSeparation","low", ...
    "MaxNumReflections",5, ...
    "BuildingsMaterial","perfect-reflector", ...
    "TerrainMaterial","perfect-reflector");

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

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

  104.2656  104.2744  112.0095  109.3152  112.0156  112.0375  112.4436  109.3198  112.0406  112.0406  112.4444  112.4444  117.7513  117.7524  117.7638

伝播モデルで建物と地形の材料タイプを設定して、材料の反射損失を構成した後、伝播パスを再計算して可視化します。最初の値は、見通し内伝播パスに対応しているため、変更されていません。

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×15

  104.2656  106.2236  119.3577  121.5812  122.2841  121.4389  127.0060  122.4593  122.7023  122.6987  127.3370  127.4156  139.1007  139.6484  153.4365

大気伝播モデルを追加し、大気損失を伴う伝播パスを再計算して可視化します。

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×15

  105.3245  107.2834  121.9430  123.4766  124.8711  124.0280  129.7238  124.3557  125.2930  125.2895  130.0564  130.1335  143.0838  143.6317  157.4225

付録

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

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

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

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

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

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

triangulation オブジェクトとして STL ファイルを読み取ります。このファイルはテーブル 1 台と椅子が 4 脚ある小さい会議室をモデル化したものです。

TR = stlread("conferenceroom.stl");

座標をスケーリングし、新しい triangulation オブジェクトを作成します。この例では、STL 単位からメートルへの変換係数が 0.9 であると仮定しています。

scale = 0.9;
scaledPts = TR.Points * scale;
TR_scaled = triangulation(TR.ConnectivityList,scaledPts);

サイト ビューアーを使用して、新しい triangulation オブジェクトを表示します。または、関数 stlwrite を使用して、新しい triangulation オブジェクトを STL ファイルとして保存することもできます。

viewer = siteviewer('SceneModel',TR_scaled);

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

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" を押しながら左クリックしてドラッグします。

直交座標のレイ トレーシング伝播モデルを作成します。レイ トレーシング手法を Shooting and Bouncing Rays (SBR) として指定します。最大 2 回の反射で光線を計算します。表面材料を木に設定します。

pm = propagationModel("raytracing", ...
    "CoordinateSystem","cartesian", ...
    "Method","sbr", ...
    "MaxNumReflections",2, ...
    "SurfaceMaterial","wood"); 

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

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

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

入力引数

すべて折りたたむ

送信機サイト。txsite オブジェクトまたは txsite オブジェクトの配列として指定します。受信機サイトが配列として指定されている場合、伝播パスは各送信機から各受信機サイトまでプロットされます。

受信機サイト。rxsite オブジェクトまたは rxsite オブジェクトの配列として指定します。送信機サイトが配列として指定されている場合、伝播パスは各送信機から各受信機サイトまでプロットされます。

伝播モデル。文字ベクトル、string、または関数 propagationModel で作成されたレイ トレーシング伝播モデルとして指定します。既定は 'raytracing' です。これは、最大反射数を 2 に設定した SBR 法を使用するレイ トレーシング伝播モデルです。

異なる反射数を計算するレイ トレーシング伝播モデルを指定するには、関数 propagationModel を使用して RayTracing オブジェクトを作成し、MaxNumReflections プロパティを設定します。

名前と値の引数

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

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

例: 'Type','power'

プロットする量のタイプ。dBm 単位の 'Type''power' または dB 単位の 'pathloss' で構成されるコンマ区切りのペアとして指定します。

'power' を指定すると、各パスはパスに沿った受信電力に従って色分けされます。'pathloss' を指定すると、各パスはパスに沿ったパス損失に従って色分けされます。

受信電力の計算には Friis の式が使用されます。

Prx=Ptx+Gtx+GrxLLtxLrx

ここで、

  • Prx は、パスに沿った受信電力。

  • Ptx は、tx.TransmitterPower で定義された送信電力。

  • Gtx は、発射角 (AoD) の方向での tx のアンテナ ゲイン。

  • Grx は、到達角度 (AoA) の方向での rx のアンテナ ゲイン。

  • L は、パスに沿って計算されたパス損失。

  • Ltx は、tx.SystemLoss で定義された送信機のシステム損失。

  • Lrx は、rx.SystemLoss で定義された受信機のシステム損失。

データ型: char

レイ トレーシング解析の伝播モデルのタイプ。'PropagationModel''raytracing' で構成されるコンマ区切りのペア、または関数 propagationModel で作成されたレイ トレーシング伝播モデルとして指定します。'raytracing' を指定した場合、関数 raytrace は、レイ トレーシング伝播モデル オブジェクト構成に対して最大 2 回の反射で SBR 法を使用して伝播パスを計算します。

代わりにイメージ手法を使用してレイ トレーシング解析を実行するには、関数 propagationModel を使用して作成した伝播モデルを指定します。次のコードは、イメージ手法を使用する伝播モデルを作成する方法を示しています。

pm = propagationModel('raytracing','Method','image');

イメージ手法と SBR 法の違いについては、伝播モデルの選択を参照してください。

データ型: char

カラーマップの色の範囲。'ColorLimits' と [min max] 形式の 2 要素の数値行ベクトルで構成されるコンマ区切りのペアとして指定します。色の範囲の単位と既定値は、'Type' パラメーターの値によって異なります。

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

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

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

データ型: double

伝播パスの色付け用のカラーマップ。'Colormap' と、事前定義されたカラーマップ名または M 個の個々の色を定義する RGB (赤、青、緑) 3 成分の M 行 3 列の配列で構成されるコンマ区切りのペアとして指定します。

データ型: char | double

マップへの色の凡例の表示。'ShowLegend'true または false から構成されるコンマ区切りのペアとして指定します。

データ型: logical

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

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

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

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

  • 出力の指定がある関数が呼び出された場合の 'gmted2010'

'cartesian'
  • 'none'

  • siteviewer オブジェクト。

  • 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®.

データ型: char | string

出力引数

すべて折りたたむ

光線構成。M 行 N 列の cell 配列として返されます。ここで、M は送信機サイトの数、N は受信機サイトの数です。各 cell 要素は、対応する送信機サイトと受信機サイトの間で見つかったすべての光線を表す comm.Ray オブジェクトの行ベクトルです。各行ベクトル内で、送信機と受信機の相互作用タイプが同じである comm.Ray オブジェクトがグループ化され、グループがアルファベット順に並べ替えられた後、反射数の昇順で並べ替えられます。各グループにおいて、光線は伝播距離の昇順で並べられます。

バージョン履歴

R2019b で導入

すべて展開する

参考

関数

オブジェクト