このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
raytrace
説明
raytrace(
は、レイ トレーシング伝播モデル tx
,rx
,propmodel
)propmodel
を使用して伝播パスを検出します。レイ トレーシング伝播モデルを使用すると、反射と回折の最大数、パス損失のしきい値、建物と地形の材料などのプロパティを指定することができます。関数 propagationModel
を使用して、レイ トレーシング伝播モデルを作成します。
raytrace(___,
は、前の構文にある任意の入力の組み合わせに加えて、1 つ以上の名前と値の引数を使用してオプションを指定します。Name,Value
)
は、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)
反射を伴う伝播パスを表示します。既定では、関数 raytrace
は SBR 法を使用し、最大 2 回の反射を伴う伝播パスを計算します。
raytrace(tx,rx)
付録
[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");
建物の上に送信機サイトを作成します。
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
オブジェクトは、既定で、地形の材料としてコンクリートを使用し、建物の材料として OpenStreetMap ファイルから取得した材料を使用します。OpenStreetMap ファイルで材料が指定されていない場合、モデルはコンクリートを使用します。建物と地形の材料タイプを変更して、完全な電気伝導体をモデル化します。
pm.TerrainMaterial = "perfect-reflector"; pm.BuildingsMaterial = "perfect-reflector"; ssPerfect = sigstrength(rx,tx,pm)
ssPerfect = -38.9406
更新された伝播モデルの伝播パスをプロットします。
raytrace(tx,rx,pm)
付録
[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");
密集した都市環境の小さいセル シナリオをモデル化する送信機サイトと受信機サイトを作成します。
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.3905 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.8191 127.5472 139.0664 140.5821
雨と気体の伝播モデルをレイ トレーシング モデルに追加して、大気損失を組み込みます。次に、伝播パスを再び可視化し、対応するパス損失を再計算します。
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.4095 130.2652 143.0496 144.5654
付録
[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);
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" を押しながら左クリックしてドラッグします。
直交座標のレイ トレーシング伝播モデルを作成します。これは、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)
光線をクリックして、光線に関する情報を表示します。
複数の材料を使用したレイ トレーシングの可視化
R2023b 以降
いくつかの建物と交差点があるサンプル都市をモデル化した glTF™ ファイルがあるとします。glTF ファイルをインポートして表示します。サイト ビューアーは、ファイルに保存されている色とテクスチャを使用してモデルを表示します。
viewer = siteviewer(SceneModel="samplecity.gltf",ShowEdges=false);
サイト ビューアーは、ファイルに保存されている各材料名を、サポートされている材料名と照合することで、シーン内の表面に材料を割り当てます。材料および照合で一致した材料のサブセットを表示します。既定では、レイ トレーシング解析関数は変数 MatchedCatalogMaterial
に格納されている材料を使用します。
viewer.Materials(1:5,:)
ans = 5×2 table Material MatchedCatalogMaterial _____________________________________ ______________________ "Concrete_WhiteEmissive1_1" "concrete" "WoodFloor_Emissive2" "wood" "Bricks7" "brick" "Metal_Emissive1" "metal" "Downtown_30mx15m_01_5storeyLOD_MAT1" ""
噴水を挟んだ両側に送信機サイトと受信機サイトを作成します。直交座標を使用してメートル単位で位置を指定します。
tx = txsite("cartesian",AntennaPosition=[36; 34.5; 1]); rx = rxsite("cartesian",AntennaPosition=[44; 28; 1]);
直交座標のレイ トレーシング伝播モデルを作成します。これは、MATLAB® が RayTracing
オブジェクトを使用して表現します。最大 1 回の反射を伴う光線を計算するように、モデルを構成します。
pm = propagationModel("raytracing",CoordinateSystem="cartesian", ... MaxNumReflections=1);
伝播パスを計算し、結果を comm.Ray
オブジェクトの cell 配列として返します。cell 配列から伝播パスを抽出します。
rays = raytrace(tx,rx,pm); rays = rays{1};
送信機サイト、受信機サイト、および伝播パスを表示します。
show(tx) show(rx) plot(rays)
パスをクリックして、パスに関する情報を表示します。相互作用する材料が情報ボックスに表示されます。
comm.Ray
オブジェクトの Interactions
プロパティのクエリを実行することで、伝播パスについての情報を取得することもできます。2 番目の光線について相互作用する材料を表示します。
rays(2).Interactions.MaterialName
ans = "concrete"
入力引数
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®. |
ほとんどの場合、この引数を siteviewer
や "none"
以外の値として指定した場合は出力引数も指定しなければなりません。
データ型: char
| string
出力引数
rays
— 光線の構成
comm.Ray
オブジェクトの M 行 N 列の cell 配列
光線の構成。comm.Ray
オブジェクトの M 行 N 列の cell 配列として返されます。ここで、M は送信機サイトの数、N は受信機サイトの数です。各 cell 要素は、対応する送信機サイトと受信機サイトの間で見つかった伝播パス (光線) を表す comm.Ray
オブジェクトの行ベクトルです。
各行ベクトル内で、関数は comm.Ray
オブジェクトを最初の交互作用タイプによってアルファベット順に並べ替えます。複数の光線で最初の交互作用タイプが同じである場合、関数は 2 番目の交互作用タイプに従って並べ替え、後続の重複する交互作用タイプに対してこの動作を繰り返します。複数の comm.Ray
オブジェクトが同じ数と種類の交互作用を同じ順序でもつ場合、関数は伝播距離の長い順にオブジェクトを並べ替えます。見通し内パスが存在する場合、関数はそれを最初の要素として含めます。
バージョン履歴
R2019b で導入R2023b: 同じシーンで複数の材料を使用するレイ トレーシング解析の実行
次の場合、関数 raytrace
は同じシーンで複数の材料を使用してレイ トレーシング解析を実行します。
glTF ファイルからシーンを作成し、
"raytracing"
、またはSurfaceMaterial
プロパティが"auto"
(既定) に設定されたRayTracing
伝搬モデル オブジェクトとして入力引数propmodel
を指定。OpenStreetMap® ファイルまたは地理空間テーブルからシーンを作成し、
"raytracing"
、またはBuildingsMaterial
プロパティが"auto"
(既定) に設定されたRayTracing
伝搬モデル オブジェクトとして入力引数propmodel
を指定。
関数 raytrace
は、ファイルまたはテーブルに保存された材料を使用してレイ トレーシング解析を実行します。ファイルまたはテーブルで材料が指定されていない場合、またはレイ トレーシング解析でサポートされていない材料がファイルまたはテーブルで指定されている場合、この関数は、代わりにコンクリートを使用します。
その結果、関数 raytrace
は、R2023b では以前のリリースとは異なる値を返す可能性があります。ファイルまたはテーブルに保存された材料が使用されるのを回避するには、RayTracing
オブジェクトを作成し (関数 propagationModel
を使用)、SurfaceMaterial
プロパティを "plasterboard"
に設定し、BuildingsMaterial
プロパティを "concrete"
に設定します。次に、そのオブジェクトを関数 raytrace
への入力として使用します。
R2023b: 複雑なシーンで SBR 法によるレイ トレーシング解析を実行した際のパフォーマンスの向上
Shooting and Bounicng Rays (SBR) 法を使用する RayTracing
伝搬モデル オブジェクトを入力として指定した場合、複雑なシーンにおける関数 raytrace
のパフォーマンスが向上します。
たとえば、次のコードは、関数 raytrace
および RayTracing
オブジェクトを使用して、都市のシーンにおける 2 つのアンテナ サイト間のレイ トレーシング伝搬パスを検出します。関数 propagationModel
を使用して RayTracing
オブジェクトを作成します。R2023b で次のコードを実行すると、R2023a よりも約 2 倍高速に伝搬パスを検出します。
function timingTest % Create Site Viewer and sites sv = siteviewer(Buildings="chicago.osm"); tx = txsite(Latitude=41.88,Longitude=-87.6295,TransmitterFrequency=2.5e9); rx = rxsite(Latitude=41.881,Longitude=-87.62951); % Create RayTracing object pm = propagationModel("raytracing",BuildingsMaterial="concrete", ... MaxNumReflections=2,MaxNumDiffractions=2); % Find propagation paths t1 = tic; raytrace(tx,rx,pm) toc(t1) close(sv) end
およその実行時間は次のとおりです。
R2023b: 252.47 秒
R2023a: 502.76 秒
このコードの時間計測は、Windows® 10、Intel® Xeon® CPU W-2133 @ 3.6 GHz テスト システム上で、関数 timingTest
を呼び出して行いました。
MATLAB がレイ トレーシング解析を実行するのに必要な時間は、シーン、および RayTracing
オブジェクトのプロパティ (AngularSeparation
、MaxNumDiffractions
、MaxNumReflections
、MaxAbsolutePathLoss
、および MaxRelativePathLoss
プロパティなど) によって異なります。MaxAbsolutePathLoss
プロパティと MaxRelativePathLoss
プロパティに適度な値を設定すると、R2023a と比べて R2023b のレイ トレーシング解析が 2 倍以上高速になる場合があります。
この例で使用されている OpenStreetMap ファイルは、クラウドソーシングによる世界中の地図データへのアクセスを提供する https://www.openstreetmap.org からダウンロードできます。このデータは Open Data Commons Open Database License (ODbL) https://opendatacommons.org/licenses/odbl/ によりライセンスされています。
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)