このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。
raytrace
説明
raytrace(
は、レイ トレーシング伝播モデル tx
,rx
,propmodel
)propmodel
を使用して伝播パスを検出します。レイ トレーシング伝播モデルを使用すると、反射と回折の最大数、パス損失のしきい値、建物と地形の材料などのプロパティを指定することができます。関数 propagationModel
を使用して、レイ トレーシング伝播モデルを作成します。
raytrace(___,
は、前の構文にある任意の入力の組み合わせに加えて、1 つ以上の名前と値の引数を使用してオプションを指定します。Name,Value
)
は、rays
= raytrace(___)rays
の伝播パスを返します。
例
レイ トレーシングを使用した障害物と反射のあるパス
レイ トレーシング伝播モデルを使用して、シカゴでの反射伝播パスを表示します。
シカゴの建物を指定してサイト ビューアーを起動します。osm ファイルの詳細については、[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)
反射を伴う伝播パスを表示します。既定では、関数 raytrace
は SBR 法を使用し、最大 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);
レイ トレーシング伝播モデルを作成します。MATLAB® は、RayTracing
オブジェクトを使用してこのモデルを表現します。既定では、伝播モデルは SBR 法を使用し、最大 2 回の表面反射を伴う伝播パスを検出します。
pm = propagationModel("raytracing");
受信機サイト、送信機サイト、および伝播モデルを使用して信号強度を計算します。
ssTwoReflections = sigstrength(rx,tx,pm)
ssTwoReflections = -54.3015
伝播パスをプロットします。
raytrace(tx,rx,pm)
RayTracing
オブジェクトを変更して、最大 5
回の反射を伴うパスを検出します。次に、信号強度を再計算します。
pm.MaxNumReflections = 5; ssFiveReflections = sigstrength(rx,tx,pm)
ssFiveReflections = -53.3889
既定では、RayTracing
オブジェクトは建物と地形の材料がコンクリートであると仮定します。建物と地形の材料タイプを変更して、完全な電気伝導体をモデル化します。
pm.BuildingsMaterial = "perfect-reflector";
ssPerfect = sigstrength(rx,tx,pm)
ssPerfect = -39.6711
更新された伝播モデルの伝播パスをプロットします。
raytrace(tx,rx,pm)
付録
[1] osm ファイルは、クラウドソーシングによる世界中の地図データへのアクセスを提供する https://www.openstreetmap.org からダウンロードされたものです。このデータは Open Data Commons Open Database License (ODbL) https://opendatacommons.org/licenses/odbl/ によりライセンスされています。
材料の反射と大気によるパス損失
香港の建物を指定してサイト ビューアーを起動します。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);
レイ トレーシング伝播モデルを作成します。MATLAB は、RayTracing
オブジェクトを使用してこのモデルを表現します。発射された光線間で低い平均角度を使用し、最大 5 つのパス反射を伴うパスを検出し、完全な電気伝導体をモデル化する建物と地形の材料タイプを使用するようにモデルを構成します。既定では、モデルは SBR 法を使用します。
pm = propagationModel("raytracing", ... "MaxNumReflections",5, ... "AngularSeparation","low", ... "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.5699 112.0092 109.3137 111.2840 111.9979 112.4416 108.1505 111.2825 111.3904 117.7506 116.5906 117.7638
建物と地形の材料タイプをそれぞれガラスとコンクリートに設定します。次に、伝播パスを再び可視化し、対応するパス損失を再計算します。既定では、モデルは最も強いパスより 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.1290 119.2409 121.2488 122.4103 121.5566 126.9462 124.1624 122.8190 127.5473 139.0664 140.5822
雨と気体の伝播モデルをレイ トレーシング モデルに追加して、大気損失を組み込みます。次に、伝播パスを再び可視化し、対応するパス損失を再計算します。
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.1887 121.8261 123.1442 124.9972 124.1457 129.6641 126.0587 125.4094 130.2653 143.0496 144.5656
付録
[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" を押しながら左クリックしてドラッグします。
直交座標のレイ トレーシング伝播モデルを作成します。これは、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)
光線をクリックして、光線に関する情報を表示します。
入力引数
tx
— 送信機サイト
txsite
オブジェクト | txsite
オブジェクトの配列
送信機サイト。txsite
オブジェクトまたは txsite
オブジェクトの配列として指定します。配列を指定した場合、関数は各送信機から各受信機サイトへの伝播パスをプロットします。
rx
— 受信機サイト
rxsite
オブジェクト | rxsite
オブジェクトの配列
受信機サイト。rxsite
オブジェクト、または rxsite
オブジェクトの配列として指定します。配列を指定した場合、関数は各送信機から各受信機サイトへの伝播パスをプロットします。
propmodel
— レイ トレーシング伝播モデル
"raytracing"
(既定値) | RayTracing
オブジェクト
レイ トレーシング伝播モデル。"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")
は、パス損失に基づいてパスを色分けします。
Type
— プロットする量のタイプ
"power"
(既定値) | "pathloss"
プロットする量のタイプ。次のオプションのいずれかとして指定します。
"power"
— dBm 単位の受信電力に基づいてパスを色分けします。"pathloss"
— dB 単位のパス損失に基づいてパスを色分けします。
関数は、次の Friis 伝達方程式の変更したバージョンを使用して、受信電力 (対数単位) を計算します。
ここで、
Prx は、受信機での受信電力。
Ptx は、送信機サイトの
TransmitterPower
プロパティで指定された送信電力。Gtx は、発射角 (AoD) の方向における送信機サイトの絶対アンテナ ゲイン。
Grx は、到達角度 (AoA) 方向における受信機サイトの絶対アンテナ ゲイン。
L は、送信機サイトと受信機サイトの間のパス損失。
Ltx は、送信機サイトの
SystemLoss
プロパティで指定されたシステム損失。Lrx は、受信機サイトの
SystemLoss
プロパティで指定されたシステム損失。
データ型: char
| string
PropagationModel
— レイ トレーシング解析の伝播モデルのタイプ
"raytracing"
(既定値) | RayTracing
オブジェクト
伝播モデル。"raytracing"
または RayTracing
オブジェクトとして指定します。既定は "raytracing"
で、SBR 法を使用し、最大 2 回の反射を伴い、かつ 0 回の回折を伴うパスを検出し、最も強いパスより 40 dB を超えて弱いパスを破棄します。
関数 propagationModel
を使用して RayTracing
オブジェクトを作成します。RayTracing
オブジェクトを使用すると、レイ トレーシング手法、反射と回折の最大数、パス損失のしきい値、建物と地形の材料などのプロパティを指定することができます。
レイ トレーシング手法の違いの詳細については、伝播モデルの選択を参照してください。
データ型: char
| string
ColorLimits
— カラーマップの色の範囲
2 要素の数値行ベクトル
カラーマップの色の範囲。[min max]
の形式の 2 要素の数値行ベクトルとして指定します。
単位と既定値は Type
の値によって異なります。
"power"
– 単位は dBm で、既定値は[-120 -5]
です。"pathloss"
– 単位は dB で、既定値は[45 160]
です。
色の範囲は、カラーマップの最初と最後の色にマッピングされる値を示します。この関数は、色の範囲の最小値より小さい値の伝播パスをプロットしません。
データ型: double
Colormap
— 伝播パスの色付け用のカラーマップ
"jet"
(既定値) | カラーマップ名 | RGB の M 行 3 列の配列
伝播パスの色付け用のカラーマップ。カラーマップ名として指定するか、M 個の個別の色を定義する RGB 3 成分から成る M 行 3 列の配列として指定します。カラーマップ名の詳細については、colormap
を参照してください。
データ型: char
| string
| double
ShowLegend
— サイト ビューアーでの色の凡例の表示
true
または 1
(既定値) | false
または 0
サイト ビューアーでの色の凡例の表示。数値または logical の 1
(true
) または 0
(false
) として指定します。
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
出力引数
rays
— 光線の構成
comm.Ray
オブジェクトの M 行 N 列の cell 配列
光線の構成。comm.Ray
オブジェクトの M 行 N 列の cell 配列として返されます。ここで、M は送信機サイトの数、N は受信機サイトの数です。各 cell 要素は、対応する送信機サイトと受信機サイトの間で見つかった伝播パス (光線) を表す comm.Ray
オブジェクトの行ベクトルです。
各行ベクトル内で、関数は comm.Ray
オブジェクトを最初の交互作用タイプによってアルファベット順に並べ替えます。複数の光線で最初の交互作用タイプが同じである場合、関数は 2 番目の交互作用タイプに従って並べ替え、後続の重複する交互作用タイプに対してこの動作を繰り返します。複数の comm.Ray
オブジェクトが同じ数と種類の交互作用を同じ順序でもつ場合、関数は伝播距離の長い順にオブジェクトを並べ替えます。見通し内パスが存在する場合、関数はそれを最初の要素として含めます。
バージョン履歴
R2019b で導入R2023a: レイ トレーシング モデルはパス損失に基づいてパスを破棄する
レイ トレーシング伝播モデルは、パス損失しきい値に基づいて伝播パスを破棄します。既定では、propmodel
入力引数を "raytracing"
または RayTracing
オブジェクトとして指定したときに、伝播モデルは最も強いパスより 40 dB を超えて弱いパスを破棄します。
その結果、関数 raytrace
は、R2023a では以前のリリースとは異なる値を返す可能性があります。相対パス損失しきい値に基づいてパスが破棄されることを回避するには、RayTracing
オブジェクトを作成し (関数 propagationModel
を使用)、その MaxRelativePathLoss
プロパティを Inf
に設定します。次に、そのオブジェクトを関数 raytrace
への入力として使用します。
R2023a: SBR 法を使用したレイ トレーシングでは、より高い精度でパスが計算される
Shooting and Bounicng Rays (SBR) 法を使用するレイ トレーシング モデルで関数 raytrace
を使用して伝播パスを検出する際、MATLAB® は倍精度浮動小数点の計算を使用して結果を計算します。以前のリリースでは、関数は単精度浮動小数点の計算を使用していました。
その結果、関数 raytrace
は、R2023a では以前のリリースとは異なる comm.Ray
オブジェクトを返す可能性があります。
R2023a: 名前と値の引数 NumReflections
は削除済み
名前と値の引数 NumReflections
は削除されました。
代わりに、関数 propagationModel
を使用して伝播モデルを作成し、名前と値の引数 MaxNumReflections
を指定します。次に、伝播モデルを入力として関数 raytrace
を使用します。次のコードは、推奨されるワークフローを示しています。
pm = propagationModel("raytracing",MaxNumReflections=3);
rays = raytrace(tx,rx,pm);
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
は、将来のリリースで削除されるという警告を発行します。
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)