raytrace
RF 伝播光線の表示または計算
説明
raytrace(
は、指定された伝播モデルに基づいて、送信機サイト (tx
,rx
,propmodel
)tx
) から受信機サイト (rx
) への伝播パスを表示します。パス損失を計算するために建物と地形の材料を入力するには、関数 propagationModel
を使用して 'raytracing'
伝播モデルを作成し、プロパティを設定して建物の材料を指定します。
raytrace(___,
は、前の構文の入力引数に加えて、名前と値の引数を 1 つ以上使用してオプションを指定します。Name,Value
)
は、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 = -54.3015
最大 2 回の反射で SBR の伝播パスをプロットします。
raytrace(tx,rx,pm)
最大 2 回の反射を解析して信号強度を計算します。ここで、受信電力の合計は、すべての伝播パスの累積電力です。
pm.MaxNumReflections = 5; ssFiveReflections = sigstrength(rx,tx,pm)
ssFiveReflections = -53.3889
既定のコンクリート材料を完全反射体に置き換えることにより、材料の影響を観察します。
pm.BuildingsMaterial = "perfect-reflector";
ssPerfect = sigstrength(rx,tx,pm)
ssPerfect = -39.6703
最大 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×13
104.2656 103.5720 112.0095 109.3152 111.2814 112.0011 112.4436 108.1516 111.2827 111.3898 117.7513 116.5894 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×13
104.2656 106.1294 119.2408 121.2477 122.4096 121.5561 126.9482 124.1615 122.8182 127.5476 139.0676 140.5833 153.3285
大気伝播モデルを追加し、大気損失を伴う伝播パスを再計算して可視化します。
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×13
105.3245 107.1891 121.8260 123.1432 124.9966 124.1453 129.6661 126.0578 125.4086 130.2655 143.0507 144.5666 157.3145
付録
[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)
光線をクリックして、光線に関する情報を表示します。
入力引数
tx
— 送信機サイト
txsite
オブジェクト | txsite
オブジェクトの配列
送信機サイト。txsite
オブジェクトまたは txsite
オブジェクトの配列として指定します。受信機サイトが配列として指定されている場合、伝播パスは各送信機から各受信機サイトまでプロットされます。
rx
— 受信機サイト
rxsite
オブジェクト | rxsite
オブジェクトの配列
受信機サイト。rxsite
オブジェクトまたは rxsite
オブジェクトの配列として指定します。送信機サイトが配列として指定されている場合、伝播パスは各送信機から各受信機サイトまでプロットされます。
propmodel
— 伝播モデル
文字ベクトル | string | propagationModel
で作成されたレイ トレーシング伝播モデル
伝播モデル。文字ベクトル、string、または関数 propagationModel
で作成されたレイ トレーシング伝播モデルとして指定します。既定は 'raytracing'
です。これは、最大反射数を 2
に設定した SBR 法を使用するレイ トレーシング伝播モデルです。
異なる反射数を計算するレイ トレーシング伝播モデルを指定するには、関数 propagationModel
を使用して RayTracing
オブジェクトを作成し、MaxNumReflections
プロパティを設定します。
名前と値の引数
オプションの引数のペアを Name1=Value1,...,NameN=ValueN
として指定します。ここで、Name
は引数名で、Value
は対応する値です。名前と値の引数は他の引数の後に指定しなければなりませんが、ペアの順序は重要ではありません。
R2021a より前では、コンマを使用して名前と値の各ペアを区切り、Name
を引用符で囲みます。
例: 'Type','power'
Type
— プロットする量のタイプ
'power'
(既定値) | 'pathloss'
プロットする量のタイプ。dBm 単位の 'Type'
と 'power'
または dB 単位の 'pathloss'
で構成されるコンマ区切りのペアとして指定します。
'power'
を指定すると、各パスはパスに沿った受信電力に従って色分けされます。'pathloss'
を指定すると、各パスはパスに沿ったパス損失に従って色分けされます。
受信電力の計算には Friis の式が使用されます。
ここで、
Prx
は、パスに沿った受信電力。Ptx
は、tx.TransmitterPower で定義された送信電力。Gtx
は、発射角 (AoD) の方向での tx のアンテナ ゲイン。Grx
は、到達角度 (AoA) の方向での rx のアンテナ ゲイン。L
は、パスに沿って計算されたパス損失。Ltx
は、tx.SystemLoss で定義された送信機のシステム損失。Lrx
は、rx.SystemLoss で定義された受信機のシステム損失。
データ型: char
PropagationModel
— レイ トレーシング解析の伝播モデルのタイプ
'raytracing'
(既定値) | propagationModel
で作成されたレイ トレーシング伝播モデル
レイ トレーシング解析の伝播モデルのタイプ。'PropagationModel'
と 'raytracing'
で構成されるコンマ区切りのペア、または関数 propagationModel
で作成されたレイ トレーシング伝播モデルとして指定します。'raytracing'
を指定した場合、関数 raytrace
は、レイ トレーシング伝播モデル オブジェクト構成に対して最大 2 回の反射で SBR 法を使用して伝播パスを計算します。
代わりにイメージ手法を使用してレイ トレーシング解析を実行するには、関数 propagationModel
を使用して作成した伝播モデルを指定します。次のコードは、イメージ手法を使用する伝播モデルを作成する方法を示しています。
pm = propagationModel('raytracing','Method','image');
イメージ手法と SBR 法の違いについては、伝播モデルの選択を参照してください。
データ型: char
ColorLimits
— カラーマップの色の範囲
2 要素の数値行ベクトル
カラーマップの色の範囲。'ColorLimits'
と [min max] 形式の 2 要素の数値行ベクトルで構成されるコンマ区切りのペアとして指定します。色の範囲の単位と既定値は、'Type'
パラメーターの値によって異なります。
'power'
– 単位は dBm で、既定値は[-120 -5]
です。'pathloss'
– 単位は dB で、既定値は[45 160]
です。
色の範囲は、カラーマップの最初と最後の色にマッピングされる値を示します。色の範囲の最小値より小さい値の伝播パスはプロットされません。
データ型: double
Colormap
— 伝播パスの色付け用のカラーマップ
'jet'
(既定値) | 事前定義されたカラーマップ名 | RGB の M 行 3 列の配列
伝播パスの色付け用のカラーマップ。'Colormap'
と、事前定義されたカラーマップ名または M 個の個々の色を定義する RGB (赤、青、緑) 3 成分の M 行 3 列の配列で構成されるコンマ区切りのペアとして指定します。
データ型: char
| double
ShowLegend
— マップへの色の凡例の表示
true
(既定値) | false
マップへの色の凡例の表示。'ShowLegend'
と true
または false
から構成されるコンマ区切りのペアとして指定します。
データ型: logical
Map
— 可視化または表面データのマップ
siteviewer
オブジェクト | triangulation
オブジェクト | string スカラー | 文字ベクトル
可視化または表面データのマップ。siteviewer
オブジェクト、triangulation
オブジェクト、string スカラー、文字ベクトルのいずれかとして指定します。有効な既定値は、座標系に応じて異なります。
座標系 | 有効なマップ値 | 既定のマップ値 |
---|---|---|
"geographic" |
|
|
"cartesian" |
|
|
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
出力引数
バージョン履歴
R2019b で導入R2022b: SBR 法は正確な幾何学的精度でパスを検出
SBR 法を使用して伝播パスを検出する際、MATLAB® は、単精度浮動小数点の計算を使用して、各パスの幾何学的精度が正確になるように結果を修正します。以前のリリースでは、パスの幾何学的精度が近似的でした。
たとえば、次のコードは、既定の SBR 法を使用して送信機と受信機の間の伝播パスを検出し、そのパスを comm.Ray
オブジェクトとして返します。R2022b では、関数 raytrace
は 7 つの伝播パスを検出します。以前のリリースでは、関数は 8 つの伝播パスを概算し、そのうちの 1 つが重複パスになります。
viewer = siteviewer(Buildings="hongkong.osm"); tx = txsite(Latitude=22.2789,Longitude=114.1625,AntennaHeight=10, ... TransmitterPower=5,TransmitterFrequency=28e9); rx = rxsite(Latitude=22.2799,Longitude=114.1617,AntennaHeight=1); rSBR = raytrace(tx,rx) raytrace(tx,rx)
R2022b | R2022a |
---|---|
rSBR = 1×1 cell array {1×7 comm.Ray} | rSBR = 1×1 cell array {1×8 comm.Ray} |
R2022b で SBR 法を使用して計算されたパスは、イメージ手法を使用して計算されたパスとより密接に一致します。イメージ手法は、正確な幾何学的精度ですべての可能なパスを検出します。たとえば、次のコードはイメージ手法を使用して、同じ送信機と受信機の間の伝播パスを検出します。
viewer = siteviewer(Buildings="hongkong.osm"); tx = txsite(Latitude=22.2789,Longitude=114.1625, ... AntennaHeight=10,TransmitterPower=5, ... TransmitterFrequency=28e9); rx = rxsite(Latitude=22.2799,Longitude=114.1617, ... AntennaHeight=1); pm = propagationModel("raytracing",Method="image",MaxNumReflections=2); rImage = raytrace(tx,rx,pm)
rImage = 1×1 cell array {1×7 comm.Ray}
この場合、SBR 法はイメージ手法と同じ数の伝播パスを検出します。一般に、SBR 法では、イメージ手法によって検出されるパスのサブセットを検出します。イメージ手法と SBR 法の両方で同じパスが検出される場合、そのパスに沿った点は、単精度浮動小数点値のマシン精度の許容誤差内で同じになります。
次のコードは、SBR 法とイメージ手法によって計算されたパス損失を 0.0001
の許容誤差内で比較します。
abs([rSBR{1}.PathLoss]-[rImage{1}.PathLoss]) < 0.0001
ans = 1×7 logical array 1 1 1 1 1 1 1
パス損失は、指定された許容誤差内で同じです。
その結果、関数 raytrace
は、R2022b では以前のリリースとは異なる結果を返す可能性があります。
この関数は、無効なパスまたは重複するパスを破棄するため、異なる数の
comm.Ray
オブジェクトを返すことがあります。この関数は、おおよそのパスではなく正確なパスを計算するため、異なる
comm.Ray
オブジェクトを返すことがあります。
R2022a: NumReflections
プロパティは削除済み
NumReflections
は将来のリリースで削除される予定です。名前と値の引数 NumReflections
は、イメージ レイ トレーシング手法にのみ適用されるようになりました。代わりに、名前と値の引数 MaxNumReflections
を指定して関数 propagationModel
を使用し、伝播モデルを作成します。次に、伝播モデルを入力として関数 raytrace
を使用します。推奨されるワークフローを次の例に示します。
pm = propagationModel('raytracing', ... 'Method','image','MaxNumReflections',2); rays = raytrace(tx,rx,pm);
R2021b: 関数 raytrace
は SBR 法を使用する
R2021b 以降、関数 raytrace
は Shooting and Bouncing Rays (SBR) 法を使用し、既定で最大 2 回の反射を計算します。以前のリリースでは、関数 raytrace
はイメージ手法を使用し、最大 1 回の反射を計算します。
代わりにイメージ手法を使用して RF 伝播光線の表示または計算を行うには、関数 propagationModel
を使用して伝播モデルを作成します。次に、伝播モデルを入力として関数 raytrace
を使用します。コードを更新する方法を次の例に示します。
pm = propagationModel('raytracing','Method','image'); raytrace(tx,rx,pm)
SBR 法とイメージ手法の詳細については、伝播モデルの選択を参照してください。
R2021b 以降、すべての RF 伝播関数は既定で SBR 法を使用し、最大 2 回の反射を計算します。詳細については、既定のモデリング手法は Shooting and Bouncing Rays 法を参照してください。
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
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)