Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

comm.RayTracingChannel

伝播光線で定義されたマルチパス フェージング チャネルを通じて信号をフィルター処理

R2020b 以降

説明

comm.RayTracingChannel System object™ は、伝播光線で定義されたマルチパス フェージング チャネルを通じて信号をフィルター処理します。詳細については、チャネル インパルス応答の節を参照してください。

伝播光線で定義されたフェージング チャネルを通じて入力信号をフィルター処理するには、次を実行します。

  1. comm.RayTracingChannel オブジェクトを作成し、そのプロパティを設定します。

  2. 関数と同様に、引数を指定してオブジェクトを呼び出します。

System object の機能の詳細については、System object とはを参照してください。

作成

説明

rtchan = comm.RayTracingChannel は、伝播光線のセットを使用するマルチパス環境を定義する、レイトレーシング フェージング チャネル System object を作成します。

rtchan = comm.RayTracingChannel(Name=Value) は、名前と値の引数を 1 つ以上使用してプロパティを設定します。たとえば、comm.RayTracingChannel(SampleRate=1e6) はサンプル レートを 1 MHz に設定します。

rtchan = comm.RayTracingChannel(rays,tx,rx) は、入力 raystx、および rx を指定して、レイトレーシング フェージング チャネル System object を作成します。

この構文を使用する場合、他のプロパティを構成するには、System object を作成した後に値を設定します。例については、レイ トレーシング チャネルのサンプル レートの構成を参照してください。

プロパティ

すべて展開する

特に指定がない限り、プロパティは "調整不可能" です。つまり、オブジェクトの呼び出し後に値を変更することはできません。オブジェクトは呼び出すとロックされ、ロックを解除するには関数 release を使用します。

プロパティが "調整可能" の場合、その値をいつでも変更できます。

プロパティ値の変更の詳細については、System object を使用した MATLAB でのシステム設計を参照してください。

入力信号のサンプルレート (Hz 単位)。正のスカラーとして指定します。レイ トレーシング チャネルのサンプル レートの構成 の例は、サンプル レートを設定するワークフローを示しています。

伝播光線。comm.Ray オブジェクト、comm.Ray オブジェクトの行ベクトル、または comm.Ray オブジェクトの行 cell 配列として指定します。このプロパティは、送信アンテナ アレイと受信アンテナ アレイ間の伝播光線を指定します。指定されたすべての comm.Ray オブジェクトは同じ Frequency プロパティ設定でなければなりません。PathSpecification プロパティが 'Locations' に設定されている指定された任意の comm.Ray オブジェクトの CoordinateSystemTransmitterLocation、および ReceiverLocation プロパティ設定は同じでなければなりません。

コード生成の場合、PropagationRays プロパティは comm.Ray オブジェクトの cell 配列でなければなりません。

ゼロの最小伝播遅延を強制するオプション。logical 1 (true) または 0 (false) として指定します。このプロパティを true に設定して、光線のすべての伝播遅延から最小伝播遅延を減算し、ゼロの最小遅延を強制します。詳細については、ヒントの節を参照してください。

送信アンテナ アレイ。次のオプションのいずれかとして指定します。

  • TransmitArrayarrayConfig オブジェクトに設定した場合、arrayConfig オブジェクトの Size プロパティを調整して、等間隔矩形アレイ (URA)、等間隔直線アレイ (ULA)、または単一の phased.IsotropicAntennaElement System object を送信配列で表すことができます。arrayConfig オブジェクトの既定の構成は、素子間隔が 0.5 メートルの 2 行 2 列の URA です。

  • TransmitArray を構成してフェーズド アレイ アンテナ System object を使用するには、Phased Array System Toolbox 製品がインストールされていなければなりません。これらのサポートされる追加の値の一覧については、フェーズド アレイ アンテナ オプションの節を参照してください。

送信アンテナ アレイの座標軸の方向。ローカル座標系 (LCS) からグローバル座標系 (GCS) への回転を示す 3 行 3 列のユニタリ行列として指定します。PropagationRays プロパティで定義されている comm.Ray オブジェクトで CoordinateSystem プロパティが 'Geographic' に設定されている場合、GCS は送信機の East-North-Up (ENU) 座標系です。

受信アンテナ アレイ。次のオプションのいずれかとして指定します。

  • ReceiveArrayarrayConfig オブジェクトに設定した場合、arrayConfig オブジェクトの Size プロパティを調整して、等間隔矩形アレイ (URA)、等間隔直線アレイ (ULA)、または単一の phased.IsotropicAntennaElement System object を受信配列で表すことができます。arrayConfig オブジェクトの既定の構成は、素子間隔が 0.5 メートルの 2 行 2 列の URA です。

  • ReceiveArray をフェーズド アレイ アンテナ System object 構成に設定するには、Phased Array System Toolbox 製品がインストールされていなければなりません。これらのサポートされる追加の値の一覧については、フェーズド アレイ アンテナ オプションの節を参照してください。

受信アンテナ アレイの座標軸の方向。LCS から GCS への回転を示す 3 行 3 列のユニタリ行列として指定します。PropagationRays プロパティで定義されている comm.Ray オブジェクトで CoordinateSystem プロパティが 'Geographic' に設定されている場合、GCS は受信機の East-North-Up (ENU) 座標系です。

GCS の受信アンテナ アレイの瞬間速度 (m/s)。[x; y; z] 形式の 3 要素の列ベクトルとして指定します。このベクトルの 3 つの要素は、それぞれ xy、および z の速度を指定します。PropagationRays プロパティで定義されている comm.Ray オブジェクトで CoordinateSystem プロパティが 'Geographic' に設定されている場合、GCS は受信機の East-North-Up (ENU) 座標系です。

チャネル インパルス応答を正規化するオプション。logical 1 (true) または 0 (false) として指定します。このプロパティを true に設定すると、各送信配列要素から各受信配列要素への CIR のゲインが 0 dB に正規化されます。

受信配列数でチャネル出力を正規化するオプション。logical 1 (true) または 0 (false) として指定します。このプロパティを true に設定して、受信配列要素の数でチャネル出力を正規化します。

チャネル フィルター処理。次のいずれかの論理値として指定します。

  • 1 (true) — チャネルは入力信号を受け入れ、フィルター処理された出力信号を生成します。

  • 0 (false) — オブジェクトは入力信号を受け入れず、フィルター処理された出力信号を生成しません。チャネル インパルス応答のみを出力します。NumSamples プロパティを使用して、フェージング処理の期間を指定する必要があります。

チャネル インパルス応答の期間に使用するサンプル数。非負の整数として指定します。

調整可能: Yes

依存関係

このプロパティを有効にするには、ChannelFiltering プロパティを false に設定します。

チャネル インパルス応答の出力データ型。'double' または 'single' を指定します。

依存関係

このプロパティを有効にするには、ChannelFiltering プロパティを false に設定します。

使用法

説明

Y = rtchan(X) は、伝播光線のセットで定義されたマルチパス フェージング チャネルを通じて入力信号をフィルター処理して、結果を Y に返します。

Y = rtchan(X,starttime) は、入力信号の開始時間を指定します。最後のフレームおよび現在のフレームが時間的に連続していない場合、System object はチャネル フィルターの状態をリセットします。

[Y,cir] = rtchan(___) は、前のいずれかの構文における入力引数の組み合わせを使用して、チャネル インパルス応答も返します。

cir = rtchan() はチャネル インパルス応答を返します。この構文を有効にするには、ChannelFiltering プロパティを false に設定します。

cir = rtchan(starttime) はチャネル インパルス応答生成の開始時間を指定します。この構文を有効にするには、ChannelFiltering プロパティを false に設定します。

入力引数

すべて展開する

入力信号。NSNT 列の行列として指定します。

  • NS は、サンプル数です。

  • NT は、送信配列要素の数です。

このオブジェクトは可変サイズの入力を受け入れます。オブジェクトがロックされると、各入力チャネルのサイズは変更できますが、チャネルの数は変更できません。詳細については、Variable-Size Signal Support with System Objectsを参照してください。

データ型: single | double
複素数のサポート: あり

入力信号の秒単位の開始時間。非負のスカラーとして指定します。

mod(starttime/SampleRate) が非ゼロの場合、開始時間は最も近い整数方向のサンプル位置に切り上げられます。開始時間は、チャネルが処理する最後のフレームの終了時間より大きくなければなりません。関数 info を使用して、最後に処理されたフレームの終了時間を取得できます。

データ型: double

出力引数

すべて展開する

出力信号。NSNR 列の行列として返されます。

  • NS は、サンプル数です。

  • NR は、受信配列要素の数です。

Y は入力 X と同じデータ型です。

チャネル インパルス応答。NS x NP x NT x NR 配列として返されます。

  • NS は、サンプル数です。ChannelFiltering プロパティを true に設定した場合、NS は入力の長さです。ChannelFilteringfalse に設定した場合、NSNumSamples プロパティで指定されます。

  • NP は、パスの数 (具体的には、PropagationRays プロパティの長さで示される光線の数) です。

  • NT は、送信配列要素の数です。

  • NR は、受信配列要素の数です。

ChannelFilteringtrue に設定した場合、この出力は入力 X と同じデータ型です。ChannelFilteringfalse に設定すると、この出力のデータ型は OutputDataType プロパティで指定されます。

詳細については、チャネル インパルス応答の節を参照してください。

オブジェクト関数

オブジェクト関数を使用するには、System object を最初の入力引数として指定します。たとえば、obj という名前の System object のシステム リソースを解放するには、次の構文を使用します。

release(obj)

すべて展開する

infoレイトレーシング チャネルに関する特性情報
showProfileレイトレーシング チャネルの時間的プロファイルと空間的プロファイルのプロット
cloneSystem object の複製
isLockedSystem object が使用中かどうかの判定
stepSystem object のアルゴリズムの実行
releaseリソースを解放し、System object のプロパティ値と入力特性の変更を可能にします。
resetSystem object の内部状態のリセット

すべて折りたたむ

マルチパス チャネル モデルに対して、0 の最小伝播遅延を強制しない場合の影響を示します。香港、中国の 2 サイト間でのマルチパス レイ トレーシング チャネルを介して信号をフィルター処理します。レイ トレーシングの結果を使用して、2 つのマルチパス チャネル モデルを作成します。最初のレイ トレーシング チャネル モデルに対して、強制的に最小伝播遅延をゼロにします。2 番目のレイ トレーシング チャネル モデルに対して、ゼロの最小伝播遅延を強制しません。

香港の建物のサイト ビューアー マップ ディスプレイを作成します。OSM ファイルの詳細については、[1] を参照してください。

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

Site Viewer with buildings

tx = txsite( ...
    "Latitude",22.2789, ...
    "Longitude",114.1625, ...
    "AntennaAngle",30, ...        % Azimuth angle
    "AntennaHeight",10, ...
    "TransmitterFrequency",28e9);
rx = rxsite( ...
    "Latitude",22.2799, ...
    "Longitude",114.1617, ...
    "AntennaAngle",120, ...       % Azimuth angle
    "AntennaHeight",1);

レイ トレーシング伝播モデルを作成します。MATLAB® は、RayTracing オブジェクトを使用してこのモデルを表現します。イメージ手法を使用して最大 2 回の表面反射を伴うパスを検出するように、モデルを構成します。伝播モデルを使用してレイ トレーシングを実行し、光線を見つけます。

pm = propagationModel("raytracing", ...
    "Method","image", ...
    "MaxNumReflections",2);
rays = raytrace(tx,rx,pm);

送信機サイトおよび受信機サイト間で計算された光線を使用して、チャネル モデルを作成します。既定の構成は、ゼロの最小伝播遅延を強制します。チャネルの時間的プロファイルと空間的プロファイルを表示します。

rtchan = comm.RayTracingChannel(rays{1},tx,rx);
rtchan.SampleRate = 50e6;
showProfile(rtchan);

Figure contains 3 axes objects. Axes object 1 with title Power Delay Profile contains an object of type stem. Axes object 2 with title Angle of Departure contains 7 objects of type quiver, text. Axes object 3 with title Angle of Arrival contains 7 objects of type quiver, text.

レイ トレーシング チャネル モデルのクローンを作成し、ゼロの最小伝播遅延を強制しないように再構成します。チャネルの時間的プロファイルと空間的プロファイルを表示します。発射角と到来角のプロットは変化しませんが、電力遅延プロファイルのプロットには、最小の遅延プロファイルをゼロに強制しない場合の遅延プロファイルの結果が更新されて表示されます。

rtchandelayed= clone(rtchan);
rtchandelayed.MinimizePropagationDelay = false;
showProfile(rtchandelayed);

Figure contains 3 axes objects. Axes object 1 with title Power Delay Profile contains an object of type stem. Axes object 2 with title Angle of Departure contains 7 objects of type quiver, text. Axes object 3 with title Angle of Arrival contains 7 objects of type quiver, text.

チャネル モデルを通じてランダムに生成された 16-QAM 信号をフィルター処理します。y および ydelayed の先頭要素を 15 個表示します。それぞれレイ トレーシング チャネル オブジェクト rtchan および rtchandelayed による出力です。遅延信号 ydelayed の先頭にあるサンプルはすべてゼロです。通信システムをモデル化する場合、後続の信号データの喪失を回避するには、この信号遅延を考慮する必要があります。

M = 16;       % Modulation order
frmLen = 1e3; % Frame length
numTx = rtchan.info.NumTransmitElements;

x = qammod(randi([0,M-1],frmLen,numTx),M);
y = rtchan(x);
numTxdelayed = rtchandelayed.info.NumTransmitElements;
x = qammod(randi([0,M-1],frmLen,numTxdelayed),M);
ydelayed = rtchandelayed(x);
y(1:15)
ans = 15×1 complex

  -0.0000 - 0.0000i
   0.0000 + 0.0000i
  -0.0000 - 0.0000i
   0.0000 + 0.0000i
  -0.0000 - 0.0000i
   0.0003 + 0.0011i
  -0.0022 - 0.0110i
   1.0137 - 0.0002i
  -1.0413 - 2.0091i
  -3.0858 + 0.0390i
      ⋮

ydelayed(1:15)
ans = 15×1

     0
     0
     0
     0
     0
     0
     0
     0
     0
     0
      ⋮

付録

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

会議室の 2 サイト間でのマルチパス レイ トレーシング チャネル モデルを介して信号をフィルター処理します。レイ トレーシングの結果を使用して、マルチパス チャネル モデルを作成します。

スタンダード テッセレーション ランゲージ (STL) のデータ ファイルを使用して、テーブル 1 台と椅子が 4 脚ある会議室の 3 次元マップを定義します。壁の近くに送信機サイト、テーブルの上に受信機サイトを定義します。

mapFileName = "conferenceroom.stl";

tx = txsite("cartesian", ...
    "AntennaPosition",[-1.45; -1.4; 2.3], ...
    "TransmitterFrequency",2.8e9);
rx = rxsite("cartesian", ...
    "AntennaPosition",[.6; .2; 1.0]);

siteviewer オブジェクトおよびオブジェクト関数 show を使用して、3 次元シナリオを可視化します。送信機サイトと受信機サイトはそれぞれ赤と青に色付けされます。

siteviewer(SceneModel=mapFileName);
show(tx,"ShowAntennaHeight",false)
show(rx,"ShowAntennaHeight",false)

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

pm = propagationModel("raytracing", ...
    "CoordinateSystem","cartesian", ...
    "MaxNumReflections",3);

伝播モデルを使用してレイ トレーシングを実行し、光線を見つけます。

rays = raytrace(tx,rx,pm,"Map",mapFileName);

返された cell 配列から計算されたレイを抽出して、プロットします。それぞれのレイは、そのパス損失値に基づいて色付けされています。

rays = rays{1,1};
plot(rays)

Site Viewer with model of conference room. Many propagation paths connect the transmitter and receiver sites.

送信機サイトおよび受信機サイト間で計算された光線を使用して、チャネル モデルを作成します。チャネルの時間的プロファイルと空間的プロファイルを表示します。

rtchan = comm.RayTracingChannel(rays,tx,rx);
showProfile(rtchan);

Figure contains 3 axes objects. Axes object 1 with title Power Delay Profile contains an object of type stem. Axes object 2 with title Angle of Departure contains 7 objects of type quiver, text. Axes object 3 with title Angle of Arrival contains 7 objects of type quiver, text.

チャネルを通じてランダムに生成された 16-QAM 信号をフィルター処理します。既定のサンプル レート 10e6 では、チャネル周波数応答はフラットです。サンプル レートを 1e9 に増加させると、周波数選択性チャネルになります。フラットな周波数応答チャネルおよび周波数選択性チャネルに対して、フィルター処理された信号をコンスタレーション ダイアグラムに表示します。

M = 16;       % Modulation order
frmLen = 1e3; % Frame length

numTx = rtchan.info.NumTransmitElements;
x = qammod(randi([0,M-1],frmLen,numTx),M);
y_samprate10e6 = rtchan(x);

release(rtchan);
rtchan.SampleRate = 1e9;
y_samprate1e9 = rtchan(x);
constellationdiag = comm.ConstellationDiagram( ...
    NumInputPorts=2, ...
    ChannelNames={ ...
    "Flat frequency response channel","Frequency selective channel"}, ...
    XLimits=[-5 5], ...
    YLimits=[-5 5], ...
    ReferenceConstellation=qammod(0:M-1,M));
constellationdiag(y_samprate10e6(:),y_samprate1e9);

レイ トレーシング チャネルのサンプル レートを変更するには、オブジェクト作成時に名前と値の引数を使用して SampleRate プロパティを設定したり、レイおよびサイトを使用してチャネル モデルを作成し、オブジェクト作成後に SampleRate プロパティを設定したりできます。

レイ トレーシング チャネル オブジェクト作成時のサンプル レート設定

サンプル レートを 20 MHz に指定して、レイ トレーシング チャネル モデルを作成します。

rtchan1 = comm.RayTracingChannel(SampleRate=2e7)
rtchan1 = 
  comm.RayTracingChannel with properties:

                      SampleRate: 20000000
                 PropagationRays: [1×1 comm.Ray]
        MinimizePropagationDelay: true
                   TransmitArray: [1×1 arrayConfig]
    TransmitArrayOrientationAxes: [3×3 double]
                    ReceiveArray: [1×1 arrayConfig]
     ReceiveArrayOrientationAxes: [3×3 double]
         ReceiverVirtualVelocity: [3×1 double]
       NormalizeImpulseResponses: true
         NormalizeChannelOutputs: true
                ChannelFiltering: true

レイ トレーシング チャネル オブジェクト作成後のサンプル レート設定

送信機サイト、受信機サイト、サイト間で計算された光線を使用して、チャネル モデルを作成します。オブジェクトを作成した後、サンプル レートを 20 MHz に設定します。

tx = txsite( ...
    Latitude=22.2789, ...
    Longitude=114.1625, ...
    AntennaAngle=30, ...        % Azimuth angle
    AntennaHeight=10, ...
    TransmitterFrequency=28e9);
rx = rxsite( ...
    Latitude=22.2799, ...
    Longitude=114.1617, ...
    AntennaAngle=120, ...       % Azimuth angle
    AntennaHeight=1);
pm = propagationModel("raytracing", ...
    Method="sbr", ...
    MaxNumReflections=3);
rays = raytrace(tx,rx,pm);

rtchan2 = comm.RayTracingChannel(rays{1},tx,rx);
rtchan2.SampleRate = 2e7
rtchan2 = 
  comm.RayTracingChannel with properties:

                      SampleRate: 20000000
                 PropagationRays: [1×2 comm.Ray]
        MinimizePropagationDelay: true
                   TransmitArray: [1×1 arrayConfig]
    TransmitArrayOrientationAxes: [3×3 double]
                    ReceiveArray: [1×1 arrayConfig]
     ReceiveArrayOrientationAxes: [3×3 double]
         ReceiverVirtualVelocity: [3×1 double]
       NormalizeImpulseResponses: true
         NormalizeChannelOutputs: true
                ChannelFiltering: true

チャネル オブジェクトを構成した後、通常はチャネルを通して変調信号をフィルター処理します。ここで、16-QAM 信号を rtchan2 レイ トレーシング チャネルを介して渡します。

modOrd = 16;
frmLen = 1e3;
numTx = rtchan2.info.NumTransmitElements;
x = qammod(randi([0,modOrd-1],frmLen,numTx),modOrd);
y = rtchan2(x);

詳細

すべて展開する

ヒント

  • MinimizePropagationDelay プロパティを true に設定した場合、System object はすべての伝播遅延パスをシフトし、最小の伝播遅延パスに関連する遅延量を削除します。パスをシフトすることで、チャネル出力の先頭にある潜在的なゼロが削除され、後続の信号サンプルを受信する遅延を考慮する必要がなくなります。

拡張機能

バージョン履歴

R2020b で導入

参考

オブジェクト

関数