Main Content

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

channelDelay

チャネルのタイミング遅延

説明

[delay,mag] = channelDelay(pathGains,pathFilters) は、チャネル インパルス応答のピークを検出してチャネルのタイミング遅延を計算します。この関数は、チャネル パス ゲイン配列とパス フィルターのインパルス応答行列からインパルス応答を再構成します。この関数は、チャネルのタイミング遅延 (サンプル単位) とチャネル インパルス応答の振幅を返します。詳細は、チャネル遅延と振幅の計算 を参照してください。

すべて折りたたむ

2 行 2 列の MIMO チャネルを構成します。オブジェクト関数 info を使用してパス フィルターを取得します。

chan = comm.MIMOChannel('SampleRate',1000,'PathDelays',[0 1.5e-3], ...
    'AveragePathGains',[1 0.8],'RandomStream','mt19937ar with seed', ...
    'Seed',10,'PathGainsOutputPort',true); 
chanInfo = info(chan);
pathFilters = chanInfo.ChannelFilterCoefficients;

チャネルを通してインパルスを渡し、パス ゲインを計算します。

[~,pathGains] = chan(ones(1,2));

取得したパス フィルターと計算したパス ゲインを指定して、チャネルのタイミング遅延を計算します。

delay = channelDelay(pathGains,pathFilters)
delay = 6

時間の経過に沿ってレイリー チャネルの相対タイミング遅延を計算および表示します。

3 つのパスで構成され、インパルス応答の可視化を有効にしたcomm.RayleighChannel System object を作成します。

chan = comm.RayleighChannel;
chan.SampleRate = 1e3;
chan.PathDelays = [0 5.3e-3 10.1e-3];
chan.AveragePathGains = [0.1 1 0.5];
chan.PathGainsOutputPort = true;
chan.RandomStream = 'mt19937ar with seed';
chan.Seed = 1;
chan.Visualization = 'Impulse response';
chan.MaximumDopplerShift = 1;

オブジェクト関数 info を使用してレイリー チャネル パス フィルターを取得します。ループ内で、レイリー チャネルを通じてすべて 1 の静的信号を渡します。関数 channelDelay では、チャネルを通じて各パスからのチャネル パス ゲイン配列および (関数 info で返される) パス フィルター係数 chanInfo.ChannelFilterCoefficients を使用して、相対チャネル タイミング遅延が計算されます。インパルス応答はそれぞれの反復で異なります。最後の反復のインパルス応答を次に示します。delay ベクトルは、それぞれの反復に対して計算された相対チャネル タイミング遅延を示しています。

chanInfo = info(chan);
numIter = 12;
delay = zeros(1,numIter);
for p=1:numIter
    [~,pg] = chan(ones(1e3,1));
    delay(p) = channelDelay(pg,chanInfo.ChannelFilterCoefficients);
end

delay
delay = 1×12

    12     7    12     2    12     7    12     7     7     7     2     2

入力引数

すべて折りたたむ

チャネル パス ゲイン。Ncs x Np x Nt x Nr 配列として指定します。ここでは、次のとおりです。

  • Ncs は、チャネル スナップショットの数です。

  • Np は、パスの数です。

  • Nt は、送信アンテナの数です。

  • Nr は、受信アンテナの数です。

pathGains のいずれかの要素が NaN の場合、関数は送信機と受信機の間にパスが存在しないと仮定します。

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

パス フィルターのインパルス応答。Np 行 Nh 列の行列として指定します。Np はパスの数で、Nh はインパルス応答のサンプル数です。

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

出力引数

すべて折りたたむ

チャネルのタイミング遅延 (サンプル単位)。整数として返されます。この値は、pathGainspathFilters の入力から再構成されたチャネル インパルス応答の最初のサンプルに相対する遅延のサンプル数を表します。関数は、複合チャネル インパルス応答のピークを検出してチャネルのタイミング遅延を計算します。詳細については、チャネル遅延と振幅の計算を参照してください。

各受信アンテナのチャネル インパルス応答の振幅。Nh 行 Nr 列の行列として返されます。Nh はインパルス応答のサンプル数で、Nr は受信アンテナの数です。詳細は、チャネル遅延と振幅の計算 を参照してください。

詳細

すべて折りたたむ

チャネル遅延と振幅の計算

チャネル遅延とインパルス応答の振幅の計算では、複合チャネル インパルス応答を使用します。

複合チャネル インパルス応答は、パス ゲイン配列で表されるすべてのチャネル スナップショットでインパルス応答の平均を求めることで得られます。入力パス ゲイン配列は、Ncs x Np x Nt x Nr の形式でなければなりません。ここでは、次のとおりです。

  • Ncs は、チャネル スナップショットの数です。

  • Np は、パスの数です。

  • Nt は、送信アンテナの数です。

  • Nr は、受信アンテナの数です。

単一値として出力されるチャネルのタイミング遅延は、チャネル インパルス応答の最初のサンプルに相対します。関数は、複合チャネル インパルス応答のピークを検出してこの値を計算します。複合チャネル インパルス応答は、すべての送信アンテナおよび受信アンテナのインパルス応答の総和です。

受信インパルス応答の振幅は、Nh 行 Nr 列の行列として出力されます。Nh はインパルス応答のサンプル数で、Nr は受信アンテナの数です。受信インパルス応答の振幅を計算するために、次が行われます。

  1. すべてのチャネル スナップショットでパス ゲインが合計されます。

  2. すべての送信アンテナおよび受信アンテナのチャネル インパルス応答に各パスからの寄与が追加されます。

  3. 送信アンテナ パスがチャネル インパルス応答配列に結合され、インパルス応答のサンプルと受信アンテナの行列が残されます。

拡張機能

C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。

R2020a で導入