フェージング チャネルの概要
Communications System Toolbox を使用すれば、オブジェクトまたはブロックを用いてフェージング チャネルを実装できます。レイリーおよびライス フェージング チャネルは、無線通信における実際の現象の有効なモデルです。これらの現象には、マルチパス散乱効果、時間分散、送信側と受信側の間の相対的な運動が原因で起こるドップラー シフトが含まれます。この節では、フェージング チャネルの簡単な概要とツールボックスを利用した実装方法を説明します。
下図は、固定された無線送信機と移動する受信者間の直接パスと、主要な反射パスを表します。影付きの四角形は建物などの反射体を表します。
複数の主要なパスがあるため、受信側では信号が遅延して到達します。さらに、電波信号はそれぞれの主要なパスに対する "局所的な" スケールでの散乱を受けます。一般に、そのような局所的な散乱は、移動体の近くの物体による多数の反射で特徴付けられます。これらの分解できない成分は、受信側で重ね合わされ、"マルチパス フェージング" として知られる現象を起こします。この現象により、それぞれの主要なパスは、離散フェージング パスとして動作します。一般に、フェージング過程は、見通し内パスの方向に対するライス分布とそれ以外の方向に対するレイリー分布によって特徴付けられます。
送信側と受信側の相対的な移動が、ドップラー シフトを引き起こします。一般に、局所的な散乱は移動体のまわりのあらゆる方向から生じます。この状況は、"ドップラー スペクトル" として知られる、ドップラー シフトの広がりを引き起こします。"最大" ドップラー シフトは、移動体の軌跡と逆方向の局所的な散乱成分に対応します。
オブジェクトを使用したフェージング チャネルの実装
オブジェクトを使用して実装するマルチパス伝播状況のベースバンド チャネル モデルは以下のとおりです。
N 個の離散フェージング パス。それぞれのパスに遅延と平均強度ゲインがあります。N = 1 のチャネルは "周波数が一様なフェージング チャネル" と呼ばれます。N > 1 のチャネルは、十分に広い帯域幅の信号によって、"周波数選択性フェージング パス" になります。
各パスのレイリーまたはライス モデル。
指定できる最大ドップラー シフトの Jakes ドップラー スペクトルを使用した既定のチャネル パス モデル。その他のタイプのドップラー スペクトル (一様、制限 Jakes、非対称 Jakes、ガウス、重ガウス、ラウンド) を使用できます (すべてのパスで同一または異なるタイプを使用できます)。
チャネル オブジェクトの作成時に最大ドップラー シフトが 0 に設定されている場合、または省略されている場合、オブジェクトはチャネルを静的 (時間経過に伴うフェージングのない) モデルとして作成し、指定したドップラー スペクトルはフェージング プロセスに影響しません。
遅延とゲインの典型的な値の詳細は、「Realistic チャネル プロパティ値の選択」を参照してください。
ブロックを使用したフェージング チャネルの実装
Channels ブロック ライブラリには、モバイル通信で実世界の現象をシミュレートできるレイリーおよびライス フェージング チャネルが含まれています。これらの現象には、マルチパス散乱効果、および送信側と受信側の間の相対的な運動が原因で起こるドップラー シフトが含まれます。
メモ: フェージングおよび加法的ホワイト ガウス ノイズの両方を使用したチャネルのモデルを作成するには、AWGN Channel ブロックと直列に接続されたフェージング チャネル ブロックを使用します。ここでは、フェージング チャネル ブロックが最初に表示されます。 |
次の表は、各フェージング チャネル ブロックが適している状況をまとめています。
信号パス | Channel ブロック |
---|---|
送信側から受信側への直接的な見通し内パス | Multipath Rician Fading Channel |
送信側から受信側への 1 つまたは複数の主要な反射パス | Multipath Rayleigh Fading Channel |
複数の主要な反射パスがある場合は、Multipath Rayleigh Fading Channel ブロックの単一のインスタンスはすべてを同時にモデルとして作成できます。ブロックが使用するパスの数は、[Delay vector] または [Gain vector] パラメーターの長さのうちで長い方です (両方のパラメーターがベクトルの場合は、同じ長さでなければなりません。いずれか一方がスカラーである場合、ブロックはスカラーを他の [vector] パラメーターのサイズに一致するベクトルに拡張します)。
状況に適したブロック パラメーターを選択することは重要です。フェージング チャネル ブロックのパラメーターの詳細は、以下を参照してください。
フェージング応答のための補正
フェージング チャネルを含む通信システムは、通常、フェージング応答を補正するコンポーネント (複数のこともある) を必要とします。フェージングを補正するための一般的な方法は以下のとおりです。
差分変調または 1 タップイコライザーは、周波数フラットなフェージング チャネルに対する補正に役立ちます。差分変調を実現する方法については、M-DPSK Modulator Baseband ブロックのヘルプ ページまたは「経験的な結果を理論上の結果と比較」の例を参照してください。
複数のタップをもつイコライザーは、周波数選択的なフェージング チャネルに対する補正に役立ちます。詳細は、「イコライズ」を参照してください。
Communications Link with Adaptive Equalization デモでは、フェージング チャネルの補正が必要な理由について説明します。
フェージング チャネルの可視化
チャネル可視化ツールを使用してフェージング チャネルの特性をプロットできます。
オブジェクトを使用して実装する通信システムについては、「チャネルの可視化」を参照してください。
ブロックを使用して実装する通信システムについては、2 つの方法でフェージング チャネル応答を可視化できます。1 つの方法はシミュレーション中にブロックをダブルクリックするという方法で、もう 1 つの方法はブロック ダイアログ ボックスで [Open channel visualization at start of simulation] チェック ボックスをオンにするという方法です。
ページのトップへ
マルチパス フェージング チャネルのシミュレーションの方法論:
Communications System Toolbox のレイリーおよびライス マルチパス フェージング チャネル シミュレーターは、[1] の節 9.1.3.5.2 の帯域制限離散マルチパス チャネル モデルを使用します。この実装で、チャネルの遅延パワー プロファイルとドップラー スペクトルは分離可能と仮定されます [1]。したがって、マルチパス フェージング チャネルは、線形有限インパルス応答 (FIR) フィルターとしてモデルが作成されます。 は、チャネルの入力における一連のサンプルを示します。チャネルの出力におけるサンプル は との関係が次のように表されます。
ここで、 は、以下によって指定される一連のタップ重みです。
上の方程式では、次のようになります。
各パス ゲイン プロセス は、以下の手順で生成されます。
平均 0 と分散 1 をもつ複素数の無相関 (白色) ガウス過程が離散時間で生成されます。
複素ガウス過程が周波数応答 のドップラー フィルターでフィルター処理されます。ここで、 は目的のドップラー パワー スペクトルを示します。
そのサンプル周期が入力信号のサンプル周期と一致するように、フィルター処理された複素ガウス過程が内挿されます。線形内挿とポリフェーズ内挿を組み合わせて使用されます。
結果の複素過程 がスケーリングされ、正しい平均パス ゲインが取得されます。レイリー チャネルの場合、フェージング過程は、次のように取得されます。
ここで、次の式が成り立ちます。
ライス チャネルの場合、フェージング過程は、次のように取得されます。
ここで、 は k 番目のパスのライス K ファクターで、 は k 番目のパスの見通し内成分のドップラー シフト (Hz) です。 は、k 番目のパスの見通し内成分の初期位相 (ラジアン) です。
帯域制限されたマルチパス チャネル モデルへの入力において、送信されたシンボルは、パルス形成によって導入された帯域幅拡張ファクター以上のファクターによってオーバーサンプリングされなければなりません。たとえば、パルス形成信号の帯域幅がシンボル レートと等しい sinc パルス形成が使用された場合、帯域幅拡張ファクターは 1 です。理想的なケースで、チャネルへの入力に少なくともシンボルあたり 1 つのサンプルが必要です。ファクターが 1 より大きいコサイン ロールオフ (RC) フィルター (パルス形成信号の帯域幅がシンボル レートの 2 倍) を使用する場合、帯域幅拡張ファクターは 2 です。理想的なケースで、チャネルへの入力に少なくともシンボルあたり 2 つのサンプルが必要です。
詳細は、MATLAB Central にある記事「A Matlab-based Object-Oriented Approach to Multipath Fading Channel Simulation」を参照してください。
参照
[1] Jeruchim, M. C., Balaban, P., and Shanmugan, K. S., Simulation of Communication Systems, Second Edition, New York, Kluwer Academic/Plenum, 2000.
ページのトップへ
クワタは何ですか?
フェージング チャネルの指定
Communications System Toolbox は、線形 FIR フィルターとしてフェージング チャネルのモデルを作成します。フェージング チャネルを使用した信号のフィルター処理の手順は次のとおりです。
使用するチャネルを記述するチャネル オブジェクトを作成します。チャネル オブジェクトは、チャネルについての情報 (最大ドップラー シフトなど) を含む MATLAB 変数の一種です。
必要に応じて、チャネル オブジェクトのプロパティを調整します。たとえば、パス遅延や平均パス ゲインを変更できます。
メモ: 最大パス遅延を 100 サンプルより大きく設定すると 'メモリ不足' エラーが発生することがあります。
関数 filter を利用してチャネル オブジェクトを信号に適用します。
この節では、チャネル オブジェクトの定義、調査、操作方法を説明します。トピックは、以下のとおりです。
チャネル オブジェクトの作成
関数 rayleighchan および ricianchan は、フェージング チャネル オブジェクトを作成します。次の表は、各関数が適している状況をまとめています。
関数 | オブジェクト | モデルを作成する状況 |
---|---|---|
rayleighchan | レイリー フェージング チャネル オブジェクト | 1 つまたは複数の主要な反射パス |
ricianchan | ライス フェージング チャネル オブジェクト | 1 つの直接的な見通し内パス (1 つまたは複数の主要な反射パスとの組み合わせもあり) |
たとえば、下記のコマンドは、100,000 Hz でサンプリングされた信号に作用するレイリー フェージング チャネルを表すチャネル オブジェクトを作成します。チャネルの最大ドップラー シフトは、130 Hz です。
c1 = rayleighchan(1/100000,130); % Rayleigh fading channel object
オブジェクト c1 は、関数 filter の有効な入力引数です。チャネル オブジェクトを使用して信号をフィルター処理するための関数 filter の使用法は、フェージング チャネルの利用を参照してください。
オブジェクトの複製とコピー- オブジェクトを作成する別の方法として、既存のオブジェクトを複製してから、必要に応じて新しいオブジェクトのプロパティを調整します。これを行う場合には、次のような copy コマンドを使用することが重要です。
c2 = copy(c1); % Copy c1 to create an independent c2.
c2 = c1 は使用しません。copy コマンドは、c1 に依存しない c1 のコピーを作成します。一方、コマンド c2 = c1 は、c1 への単なる参照として c2 を作成するので、c1 と c2 の内容は区別できません。
オブジェクト プロパティの表示
チャネル オブジェクトには、チャネル モデル、既に信号をフィルター処理したチャネルの状態、将来の信号へのチャネル操作などに関する情報を記録する多数のプロパティがあります。次の方法で、プロパティを表示できます。
チャネル オブジェクトのすべてのプロパティを表示するには、コマンド ウィンドウでオブジェクトの名前を入力します。
チャネル オブジェクトの特定のプロパティを表示するか、変数にプロパティの値を割り当てるには、オブジェクトの名前、ドット (ピリオド)、プロパティの名前の順に入力します。
次の例では、「c1」と入力すると、チャネル オブジェクト c1 のすべてのプロパティが MATLAB に表示されます。一部のプロパティは、c1 を作成した rayleighchan コマンドの値をもち、他のプロパティは既定値をもちます。
出力は以下のようになります。
c1 = ChannelType: 'Rayleigh' InputSamplePeriod: 1.0000e-005 DopplerSpectrum: [1x1 doppler.jakes] MaxDopplerShift: 130 PathDelays: 0 AvgPathGaindB: 0 NormalizePathGains: 1 StoreHistory: 0 StorePathGains: 0 PathGains: -0.0428 + 0.4732i ChannelFilterDelay: 0 ResetBeforeFiltering: 1 NumSamplesProcessed: 0 g = -0.0428 + 0.4732i
ライス フェージング チャネル オブジェクトには、上記以外の追加プロパティとしてスカラーの KFactor プロパティがあります。
各チャネル プロパティの意味の詳細は、関数 rayleighchan または ricianchan のリファレンス ページを参照してください。
オブジェクト プロパティの変更
チャネル オブジェクトの書き込み可能なプロパティの値を変更するには、ドット表記を使用する代入ステートメントをチャネル オブジェクトで実行します。ドット表記とは、具体的には、オブジェクトの名前、ドット、プロパティの名前の順に構成する表現です。
次の例は、ResetBeforeFiltering プロパティを変更する方法を示しますが、各フィルター処理操作の前にチャネルをリセットしません。
次の出力は、ResetBeforeFiltering プロパティの値の変更前と変更後のチャネル オブジェクトのすべてのプロパティを表示します。プロパティの 2 番目のリストでは、ResetBeforeFiltering プロパティは値 0 をもちます。
c1 = ChannelType: 'Rayleigh' InputSamplePeriod: 1.0000e-005 DopplerSpectrum: [1x1 doppler.jakes] MaxDopplerShift: 130 PathDelays: 0 AvgPathGaindB: 0 NormalizePathGains: 1 StoreHistory: 0 StorePathGains: 0 PathGains: 0.5781 + 0.9020i ChannelFilterDelay: 0 ResetBeforeFiltering: 1 NumSamplesProcessed: 0 c1 = ChannelType: 'Rayleigh' InputSamplePeriod: 1.0000e-005 DopplerSpectrum: [1x1 doppler.jakes] MaxDopplerShift: 130 PathDelays: 0 AvgPathGaindB: 0 NormalizePathGains: 1 StoreHistory: 0 StorePathGains: 0 PathGains: 0.5781 + 0.9020i ChannelFilterDelay: 0 ResetBeforeFiltering: 0 NumSamplesProcessed: 0
メモ: チャネル オブジェクトの一部のプロパティは、読み取り専用です。たとえば、チャネルは、最後のリセット以降に処理したサンプル数を自動的にカウントするので、NumSamplesProcessed プロパティに新しい値を割り当てることはできません。 |
チャネル オブジェクト プロパティ間の関係
チャネル オブジェクトのプロパティには互いに関連しているものがあり、あるプロパティの値が変更されると、チャネル オブジェクトの整合性を維持するため、他のプロパティの値も何らかの適切な方法で変更しなければなりません。たとえば、PathDelays のベクトル長を変更する場合は、AvgPathGaindB の値を変更して、そのベクトル長が PathDelays の新しい値に等しくなるようにしなければなりません。これは、2 つのベクトルそれぞれの長さがチャネルの離散的なパスの数に等しいためです。リンクされたプロパティの詳細と例は、rayleighchan または ricianchan のリファレンス ページを参照してください。
ページのトップへ
フェージング チャネルのドップラー スペクトルの指定
チャネル オブジェクトのドップラー スペクトルは、その DopplerSpectrum プロパティを介して指定します。このプロパティの値は、次のいずれかでなければなりません。
ドップラー オブジェクト。この場合、同じドップラー スペクトルがチャネル オブジェクトの各パスに適用されます。
PathDelays ベクトル プロパティと同じ長さのドップラー オブジェクトのベクトル。この場合、各パスのドップラー スペクトルは、ベクトル内の対応するドップラー オブジェクトによって提供されます。
ドップラー オブジェクトは、最大ドップラー シフトを除き、チャネル オブジェクトのプロパティであるドップラー スペクトルを特徴付けるために使用されるすべてのプロパティを含みます。この節では、ドップラー オブジェクトを作成および操作する方法と、ドップラー オブジェクトをチャネル オブジェクトの DopplerSpectrum プロパティに割り当てる方法について説明します。
ドップラー オブジェクトの作成
ドップラー オブジェクトは、チャネル オブジェクトの DopplerSpectrum プロパティの値を指定するためのものです。ドップラー オブジェクトは 7 つの関数のいずれかを使用して作成できます (doppler.ajakes、doppler.bigaussian、doppler.jakes、doppler.rjakes、doppler.flat、doppler.gaussian、および doppler.rounded)。これらの各関数の説明と基盤となる理論は、該当するリファレンス ページを参照してください。
たとえば、チャネルの最大ドップラー シフトによって正規化標準偏差 0.1 をもつガウス スペクトルは次のように作成できます。
d = doppler.gaussian(0.1);
ドップラー オブジェクトの複製
チャネル オブジェクトの場合と同様に、ドップラー オブジェクトは関数 copy を使用して複製できます。コマンドは次のとおりです。
d2 = copy(d1);
上記のコマンドは、d1 と同じプロパティをもつドップラー オブジェクト d2 を作成します。d1 と d2 はドップラー オブジェクトの別々のインスタンスなので、一方を変更しても、もう一方には影響しません。代わりに d1 = d2 を使用すると、d1 と d2 の両方がドップラー オブジェクトの同じインスタンスを参照するので、一方を変更すると、もう一方も変更されます。
ドップラー オブジェクト プロパティの表示と変更
ドップラー オブジェクト プロパティを表示および変更する構文は、チャネル オブジェクトの場合と同じです (オブジェクト プロパティの表示とオブジェクト プロパティの変更を参照してください)。関数 disp をドップラー オブジェクトと共に使用して、ドップラー オブジェクトのプロパティを表示できます。
次の例では、既定のプロパティでラウンド ドップラー オブジェクトを作成して表示し、その CoeffRounded プロパティの 3 番目の要素を変更します。
dr = doppler.rounded dr = SpectrumType: 'Rounded' CoeffRounded: [1 -1.7200 0.7850] dr.CoeffRounded(3) = 0.8250 dr = SpectrumType: 'Rounded' CoeffRounded: [1 -1.7200 0.8250]
すべてのドップラー オブジェクトに共通するプロパティ SpectrumType は読み取り専用であることに注意してください。このプロパティはオブジェクトの作成時に自動的に指定され、変更することはできません。別のドップラー スペクトル タイプを使用する場合は、目的のタイプの新しいドップラー オブジェクトを作成する必要があります。
bacusi2o6を作る方法
チャネル オブジェクト内でのドップラー オブジェクトの使用
チャネル オブジェクトの DopplerSpectrum プロパティは、それをドップラー オブジェクト、またはドップラー オブジェクトのベクトルに割り当てることによって変更できます。次の例は、作成されたレイリー チャネル オブジェクトの既定の Jakes ドップラー スペクトルをフラット ドップラー スペクトルに変更する方法を示します。
>> h = rayleighchan(1/9600, 100) h = ChannelType: 'Rayleigh' InputSamplePeriod: 1.0417e-004 DopplerSpectrum: [1x1 doppler.jakes] MaxDopplerShift: 100 PathDelays: 0 AvgPathGaindB: 0 NormalizePathGains: 1 StoreHistory: 0 StorePathGains: 0 PathGains: -0.4007 - 0.2748i ChannelFilterDelay: 0 ResetBeforeFiltering: 1 NumSamplesProcessed: 0 >> dop_flat = doppler.flat dop_flat = SpectrumType: 'Flat' >> h.DopplerSpectrum = dop_flat h = ChannelType: 'Rayleigh' InputSamplePeriod: 1.0417e-004 DopplerSpectrum: [1x1 doppler.flat] MaxDopplerShift: 100 PathDelays: 0 AvgPathGaindB: 0 NormalizePathGains: 1 StoreHistory: 0 StorePathGains: 0 PathGains: -0.4121 - 0.2536i ChannelFilterDelay: 0 ResetBeforeFiltering: 1 NumSamplesProcessed: 0
次の例は、作成されたライス チャネル オブジェクトの既定の Jakes ドップラー スペクトルを正規化標準偏差 0.3 をもつガウス ドップラー スペクトルに変更して、DopplerSpectrum プロパティを表示し、正規化標準偏差の値を 1.1 に変更する方法を示します。
>> h = ricianchan(1/9600, 100, 2); >> h.DopplerSpectrum = doppler.gaussian(0.3) h = ChannelType: 'Rician' InputSamplePeriod: 1.0417e-004 DopplerSpectrum: [1x1 doppler.gaussian] MaxDopplerShift: 100 PathDelays: 0 AvgPathGaindB: 0 KFactor: 2 DirectPathDopplerShift: 0 DirectPathInitPhase: 0 NormalizePathGains: 1 StoreHistory: 0 StorePathGains: 0 PathGains: 0.8073 - 0.0769i ChannelFilterDelay: 0 ResetBeforeFiltering: 1 NumSamplesProcessed: 0 >> h.DopplerSpectrum ans = SpectrumType: 'Gaussian' SigmaGaussian: 0.3000 >> h.DopplerSpectrum.SigmaGaussian = 1.1;
次の例は、作成された 3 パス レイリー チャネル オブジェクトの既定の Jakes ドップラー スペクトルを別のドップラー スペクトルのベクトルに変更し、3 番目のパスのドップラー スペクトルのプロパティを変更する方法を示します。
>> h = rayleighchan(1/9600, 100, [0 1e-4 2.1e-4]); >> h.DopplerSpectrum = [doppler.flat doppler.flat doppler.rounded] h = ChannelType: 'Rayleigh' InputSamplePeriod: 1.0417e-004 DopplerSpectrum: [3x1 doppler.baseclass] MaxDopplerShift: 100 PathDelays: [0 1.0000e-004 2.1000e-004] AvgPathGaindB: [0 0 0] NormalizePathGains: 1 StoreHistory: 0 StorePathGains: 0 PathGains: [0.4233 - 0.1113i -0.0785 + 0.1667i -0.2064 + 0.3531i] ChannelFilterDelay: 3 ResetBeforeFiltering: 1 NumSamplesProcessed: 0 >> h.DopplerSpectrum(3).CoeffRounded = [1 -1.21 0.7];
チャネル オブジェクトの DopplerSpectrum プロパティがベクトルの場合、次の処理が行われます。
PathDelays ベクトル プロパティの長さが大きくなると、Jakes ドップラー オブジェクトが付加されて PathDelays の長さに一致するように DopplerSpectrum の長さが自動的に大きくなります。
PathDelays ベクトル プロパティの長さが小さくなると、最後のドップラー オブジェクトが削除されて PathDelays の長さに一致するように DopplerSpectrum の長さが自動的に小さくなります。
ページのトップへ
チャネル オブジェクトの設定
チャネル オブジェクトを使って信号をフィルター処理する前に、チャネルのプロパティがモデルを作成したい状況に対して適切な値をもつことを確かめてください。この節では、ユーザーのモデル作成の必要性に適切な実際の値を選択するのに役立つ指針をいくつか提供します。トピックは、以下のとおりです。
チャネル オブジェクトのプロパティの値の表示と変更のための構文は、「フェージング チャネルの指定」で説明されています。
Realistic チャネル プロパティ値の選択
Realistic チャネルを記述するプロパティ値を選択するためのいくつかのヒントがあります。
パス遅延
慣例により、最初の遅延は一般にゼロに設定されます。最初の遅延は、最初の到着経路に相当します。
屋内環境では、最初のもの以降のパス遅延は、一般には 1 ナノ秒から 100 ナノ秒 (つまり、1e-9 秒から 1e-7 秒) までの範囲にあります。
屋外環境では、最初のもの以降のパス遅延は、一般には 100 ナノ秒から 10 マイクロ秒 (つまり、1e-7 秒から 1e-5 秒) までの範囲にあります。この範囲の非常に大きな遅延は、たとえば、山で囲まれている地域にあてはまります。
メモ: 最大パス遅延を 100 サンプルより大きく設定すると 'メモリ不足' エラーが発生することがあります。
離散的なパスを分解する信号の能力は、帯域幅に関連しています。最大と最小のパス遅延の差がシンボル周期のおよそ 1% よりも小さい場合、信号は 1 つの離散的なパスのみがあるかのようにチャネルを通ります。
平均パス ゲイン
チャネル オブジェクト内の平均パス ゲインは、各フェージング パスの平均強度ゲインを表します。実際には、平均パス ゲインの値は、絶対値の大きい負の dB 値です。しかし、コンピューター モデルは,一般に -20 dB と 0 dB の間の平均パス ゲインを使用します。
平均パス ゲインのベクトルの dB 値は、しばしば、遅延の関数としておおよそ線形に減少しますが、特定の遅延の概要は伝播環境に依存します。
パス ゲインの強度の総和の期待値を 1 とするために、チャネル オブジェクトの NormalizePathGains プロパティによってパス ゲインを正規化できます。
最大ドップラー シフト
標準 GSM (Global System for Mobile Communication) システムのような無線アプリケーションには、移動体の速度から見てドップラー シフトを指定することが望ましいです。移動体が速度 v (m/s) で移動する場合、最大ドップラー シフトは次のように計算されます。ここで、f はヘルツ単位の送信搬送周波数で、c は光速 (3e8m/s) です。
この式に基づき、移動体の速度から見ると、高速道路を移動している車からの信号は、およそ 80Hz の最大ドップラー シフトを起こす可能性があります。一方、移動している歩行者からの信号は、およそ 4Hz の最大ドップラー シフトを起こす可能性があります。次の図では、900MHz の送信搬送周波数を仮定します。
最大ドップラー シフト 0 は、レイリー分布またはライス分布によってもたらされる静的なチャネルに相当します。
ライス フェージング チャネルに対する K ファクター
ライス K ファクターは、見通し内伝播路に対する反射と乱反射の強度比を指定します。比は線形に表されます。dB 単位ではありません。
ライス フェージングに対して、K ファクターは一般に 1 と 10 の間にあります。
レイリー フェージングに相当する 0 の K ファクター
ドップラー スペクトル パラメーター
シミュレーションの必要性に基づいたチャネル オブジェクトの設定
フィルター処理過程のカスタマイズのためにチャネル オブジェクトを設定するためのいくつかのヒントがあります。
ユーザーのデータが (たとえば、ループ内で処理する) ベクトルの列に分割される場合、後の呼び出しで使用するためにチャネルの状態の情報を自動的に保存し、関数 filter を複数回実行できます。状態の情報には、チャネル オブジェクトの PathGains と NumSamplesProcessed プロパティで可視のものもありますが、可視というより内部的であるプロパティも含まれます。
メモ: ある実行から次の実行までの連続性を保持するには、チャネル オブジェクトの ResetBeforeFiltering プロパティを 0 に設定しなければなりません。
チャネル オブジェクトの ResetBeforeFiltering プロパティを 0 に設定し、ランダム性が再現可能であるとしたい場合、チャネルと内部の乱数発生器の状態をリセットするために、任意の信号をフィルター処理する前に関数 reset を使用してください。
以前に保存された状態の情報を使用しないように、フィルター処理操作の前にチャネルをリセットしたい場合、関数 reset を使用するか、あるいはチャネル オブジェクトの ResetBeforeFiltering プロパティを 1 に設定してください。前者の方法では、チャネル オブジェクトを一度リセットしますが、後者の方法では、チャネル オブジェクトを呼び出すごとに関数 filter がチャネル オブジェクトをリセットします。
パス ゲインの強度の総和の期待値が 1 となるようにフェージング過程を正規化したい場合は、チャネル オブジェクトの NormalizePathGains プロパティを 1 に設定します。
ページのトップへ
フェージング チャネルの利用
「フェージング チャネルの指定」で説明したようにチャネル オブジェクトを作成した後、関数 filter を使って信号をチャネルに渡すことができます。filter に対する引数は、チャネル オブジェクトと信号です。フィルター処理操作の最後で、チャネル オブジェクトはその状態を最終的なパス ゲインやチャネルが作成されたりリセットされてからチャネルが処理したサンプルの総数を調べることができるように保持します。それぞれの新しいフィルター処理操作の前にチャネルの状態をリセットしないようにチャネルを設定する (ResetBeforeFiltering が 0) 場合、状態の情報を保持することは、連続するフィルター処理操作間の連続性を保持するために重要です。
基本的な構文と状態の保持を示す例については、「フェージングした信号の強度」を参照してください。
チャネル オブジェクトの特性をプロットするためにチャネル可視化ツールを使用する場合、プロットの情報を与えられるように、チャネル オブジェクトの StateHistory プロパティを 1 に設定する必要があります。詳細は、「チャネルの可視化」を参照してください。
ページのトップへ
レイリー フェージング チャネル
次の例では、フェージング チャネルを使用します。
フェージングした信号の強度
次のコードは、フェージングされた信号の強度を (サンプル数に対して) プロットします。このコードは、関数 filter と関数 rayleighchan の構文やチャネル オブジェクトの状態の保持も示します。出力から、NumSamplesProcessed は信号 sig の要素数に等しいことに注意してください。
出力とプロットは、次のようになります。
地球の重量はどのくらい
c = ChannelType: 'Rayleigh' InputSamplePeriod: 1.0000e-004 DopplerSpectrum: [1x1 doppler.jakes] MaxDopplerShift: 100 PathDelays: 0 AvgPathGaindB: 0 NormalizePathGains: 1 StoreHistory: 0 StorePathGains: 0 PathGains: -0.8062 + 0.2648i ChannelFilterDelay: 0 ResetBeforeFiltering: 1 NumSamplesProcessed: 2000
経験的な結果を理論上の結果と比較
次のコードは、周波数フラットなレイリー フェージング チャネル オブジェクトを作成し、それを使って単一ベクトルから成る DBPSK 信号を処理します。S/N 比の異なる値に対して、システムのビット誤り率を計算することによって例を続けます。この例では、awgn の前に filter を使用することに注意してください。これは、フェージングを AWGN と組み合わせる場合に使用することが推奨される順序です。
上記のコードのパラメーターを使用した場合、フェージングの速度が遅いため、2 つの連続サンプル間で同じと見なされます。
結果のプロットは、シミュレーションの結果が berfading によって計算された理論上の結果に近いことを示します。
遅延の利用
チャネル オブジェクトの ChannelFilterDelay プロパティの値は、チャネルの出力が入力より遅延するサンプル数です。入力データ セットと出力データ セットを直接比較する場合、適切な丸めやパディング操作を使うことによって遅延を考慮しなければなりません。
この例は、ビット誤り率を計算する前に遅延を考慮する 1 つの方法を示します。
下記の出力は、誤り率が小さいことを示します。例でチャネル遅延を補正しなければ、誤り率は 1/2 に近くなったでしょう。
num = 845 ber = 0.0170
遅延の取り扱いに関する詳細- MATLAB を使用してたたみ込みインターリーブされたデータの再生に対する遅延の影響 の説明では、遅延を補正する 2 つの典型的な方法を説明します。そこでの説明は、チャネル モデル作成ではなく干渉の操作についてですが、データの切り捨てとパディングを含む手法は、チャネル モデル作成に等しく適用可能です。
ループを使ったフィルター処理
「シミュレーションの必要性に基づいたチャネル オブジェクトの設定」の節では、ある呼び出しから次の呼び出しへの連続性を維持しながら関数 filter を複数回実行する方法を示します。下記の例は、filter をループ内で実行し、アニメーションの効果のために逐次代入法からの小さなデータ セットを使用します。この例の特定のチャネルは、2 つの離散的な主要パスをもつレイリー フェージング チャネルです。
散布図は、ループの各反復で変化し、フェージング過程が乱数を含むので、内容は完全に同じではありません。次のいくつかのスナップショットは、例で作成できる典型的なイメージです。
散布図の例 (a)
散布図の例 (b)
チャネル状態の履歴の保存
既定の設定では、チャネル オブジェクトの PathGains プロパティは、現在の複素数のパス ゲイン ベクトルを保存します。
チャネルの StoreHistory プロパティを true に設定すると、このプロパティに最後の N パス ゲイン ベクトルが保存されます。ここで、N はチャネルを通して処理されるベクトルの長さです。次のコードは、このプロパティを示します。
h = rayleighchan(1/100000, 130); % Rayleigh channel tx = randint(10, 1, 2); % Random bit stream dpskSig = dpskmod(tx, 2); % DPSK signal h.StoreHistory = true; % Allow states to be stored y = filter(h, dpskSig); % Run signal through channel h.PathGains % Display the stored path gains data
この例は以下を出力します。
ans = -0.0460 - 1.1873i -0.0439 - 1.1881i -0.0418 - 1.1889i -0.0397 - 1.1897i -0.0376 - 1.1904i -0.0355 - 1.1912i -0.0334 - 1.1920i -0.0313 - 1.1928i -0.0296 - 1.1933i -0.0278 - 1.1938i
最後の要素は、チャネルの現在のパス ゲインです。
StoreHistory を true に設定すると、チャネルの関数 filter の実行速度が大幅に遅くなります。
チャネル可視化ツール
Communications System Toolbox ソフトウェアは、フェージング チャネルの特性を GUI で表示するのに役立つプロット関数を提供します。フェージング チャネルとオブジェクトの説明は、「フェージング チャネル」を参照してください。
チャネル可視化ツールを開くには、コマンド ラインで plot(h) と入力します。ここで、h は、プロットの情報を含むチャネル オブジェクトです。チャネル オブジェクトにプロットの情報を与えるには、その StoreHistory プロパティを true に設定した後、チャネル オブジェクトに信号を通します。
たとえば、次のコードは、ランダム信号が通る 3 つのパスのレイリー チャネルを示すチャネル可視化ツールを開きます。
% Three-Path Rayleigh channel h = rayleighchan(1/100000, 130, [0 1.5e-5 3.2e-5], [0, -3, -3]); tx = randint(500, 1, 2); % Random bit stream dpskSig = dpskmod(tx, 2); % DPSK signal h.StoreHistory = true; % Allow states to be stored y = filter(h, dpskSig); % Run signal through channel plot(h); % Call Channel Visualization Tool
チャネル可視化ツールの基本的な利用の例については、「チャネル可視化ツールを利用する例」を参照してください。
このツールは、Communications System Toolbox ソフトウェアからアクセスすることもできます。
GUI の部分- [Visualization] プルダウン メニューによって、可視化の方法を選択できます。詳細は、「可視化のオプション」を参照してください。
[Frame count] カウンターは、現在のフレームのインデックスを示します。これは、チャネル オブジェクトの作成あるいはリセット後にフィルター メソッドで処理されたフレームの数を示します。frame は、チャネルに対して指定されたものに等しいサンプル周期をもち、時間が等間隔の M 個の連続なサンプルであると説明される M 要素のベクトルです。
[Sample index] スライダーコントロールは、どのチャネル スナップショットが現在表示されているかを示します。[Pause] ボタンは、再びクリックするまで実行中のアニメーションを停止します。スライダー コントロールと [Pause] ボタンは、[Doppler Spectrum] を除き、すべての表示に適用されます。
[Animation] プルダウン メニューによって、各フレーム内にどのようにチャネル スナップショットを表示させたいか選択できます。これを [Slow] に設定すると、ツールは [Sample index] スライダー コントロールで設定されたサンプルから開始して、チャネル スナップショットを連続して表示します。[Medium] または [Fast] を選択すると、チャネル スナップショットをより迅速に通過でき、ツールはより少数の等間隔のスナップショットを表示するようになります。[Interframe only] (既定の選択) を選択すると、同じフレーム内でのスナップショットの自動的なアニメーションが起こりません。[Animation] メニューは、[Doppler Spectrum] を除き、すべての可視化に適用されます。
可視化のオプション- チャネル可視化ツールは、フィルターの特性をさまざまな方法でプロットします。[Visualization] メニューから可視化の方法を選択するだけで、プロットは自動的に更新されます。
現在、次の可視化の方法を利用できます。
Impulse Response (IR)-次のプロットは、2 つのインパルス応答、マルチパス応答 (無限大の帯域幅) と 帯域制限されたチャネル応答の振幅を示します。
マルチパス応答が、stem によって表されます。それぞれの stem が 1 つのマルチパス コンポーネントに相当します。最小の遅延の値をもつコンポーネントは赤で、最大の遅延をもつコンポーネントは青で示されています。中間的な遅延をもつコンポーネントは、遅延が大きいほど青くなるように、赤と青の間で次第に変化します。
帯域制限されたチャネル応答は、緑の曲線で表されます。この応答は、前述のマルチパスインパルス応答と、入力信号のサンプル周期に等しい周期 T の sinc パルスとのたたみ込みの結果です。
緑色で塗りつぶされた丸印は、レート 1/T でサンプリングされたチャネル フィルター応答を表します。チャネル フィルターの出力は、(レート 1/T でサンプリングされた) 入力信号とこの離散時間 FIR チャネル フィルター応答とのたたみ込みです。計算速度のために、応答は切り捨てられます。
白抜きの緑色の丸印は、入力信号を処理するために使用されるチャネル フィルター応答で捕捉されないサンプル値を表します。
これらのインパルス応答が時間と共に変化することに注意してください。インパルス応答が現在のフレームに対して時間と共に変化する様子 (すなわち、入力信号ベクトルの時間経過) を可視化するためにスライダーを使用できます。
Frequency Response (FR)-次のプロットは、信号の帯域幅でのマルチパス チャネルの周波数応答の振幅 (dB) を示します。
インパルス応答の可視化と同様に、この周波数応答が時間と共に変化する様子を可視化できます。
IR Waterfall-次のプロットは、インパルス応答の振幅の時間的な変化を示します。
これは、現在の応答を示す最も濃い緑色の曲線で、最後のフレーム内に帯域制限のあるチャネル インパルス応答の10 スナップショットを示します。
時間オフセットは、現在の応答時間に対するチャネル スナップショットの時間です。
Phasor Trajectory-このプロットは、インパルス応答プロットに対して使用された同じカラー コードを使用して、各マルチパス コンポーネントに対する位相ベクトル (振幅と位相を表すベクトル) を示します。
位相ベクトルは、パス遅延の順に端と端を接続され、結果の位相ベクトルの軌跡が緑色のラインとしてプロットされます。この結果の位相ベクトルは、"狭帯域の位相ベクトル" として参照されます。
このプロットは、狭帯域の信号のマルチパス チャネルの効果を決めるために使用できます。ここでは、マルチパス チャネルの遅延のスパンよりもはるかに大きいサンプル周期をもつとして (あるいは、チャネルのコヒーレンス 帯域幅よりもはるかに小さい信号帯域幅)、狭帯域の信号が定義されます。こうして、マルチパス チャネルは、すべてのマルチパス コンポーネント ゲインの総和である 1 つの複素数ゲインで表すことができます。狭帯域の位相ベクトルの軌跡が原点あるいはその近くを通過する場合、これは極端な狭帯域の減衰に相当します。
Multipath Components-次のプロットは、マルチパス インパルス応答に対して使用されるのと同じカラー コードを使って、マルチパスのゲインの振幅の時間経過を示します。
三角形の印と垂直の破線は、現在のフレームの開始を表します。フレームが前に処理されていた場合、そのマルチパス ゲインも表示されます。
Multipath Gain-次のプロットは、3 つの信号帯域幅に対するマルチパス チャネルに対して全体のゲインを示します。
全体のゲインは、次に説明するようにコンポーネントの大きさの総和です。
狭帯域 (マゼンタのドット):これは、上の軌跡のプロットにおける、狭帯域位相ベクトルの振幅です。この曲線は、狭帯域フェージング包絡線と呼ばれることがあります。
現在の信号帯域幅 (青い点線):これは、チャネル フィルター インパルス応答サンプルの振幅の総和です (インパルス応答プロットの中空でない緑色のドット)。この曲線は、RAKE 受信機を使って捕捉できる最大信号エネルギーを表します。その値 (または、それから導かれた理論的な BER などの指標) は、整合フィルター限界と呼ばれることがあります。
無限大の帯域幅 (赤い実線):これは、マルチパス コンポーネントゲインの振幅の総和です。
一般に、このマルチパス ゲインまたは信号フェージングのばらつきは、マルチパス コンポーネントがより分解可能になるので、信号帯域幅が増大するにつれて減少します。信号の帯域幅曲線が狭帯域の曲線におおよそ従う場合、信号を狭帯域として記述できます。信号の帯域幅曲線が無限大の帯域幅曲線におおよそ従う場合、信号を広帯域として記述できます。適切な受信機を使用して、広帯域信号は、マルチパス チャネルに固有のパスの多様性を活かします。
Doppler Spectrum-このプロットは、2 つのドップラー スペクトルを示します。
赤い点線で表される最初のドップラー スペクトルは、マルチパス チャネル モデルで利用されるドップラー フィルター応答に基づく理論的なスペクトルです。上記のプロットで、マルチ パス チャネル モデルに対して使用できる理論的なドップラー スペクトルは、"Jakes スペクトル" として知られます。プロットされたドップラー スペクトルは、べき乗の合計が 1 になるように正規化されることに注意してください。このドップラー スペクトルは、ドップラー フィルター応答を決定するために利用されます。実際の目的のためには、プロットに示すように、ドップラー スペクトルを修正する効果をもつ、ドップラー フィルター応答の切り捨てが行われます。
青いドットで表された 2 番目のドップラー スペクトルは、モデルがパス ゲインを作成するときに、マルチパス フェージング チャネルの強度スペクトルを測定することによって決定されます。この測定は、十分なパス ゲインが作成された後にのみ意味があります。プロットの上のタイトルは、最初のドップラー スペクトルまたは更新されたスペクトルがプロットされる前に、どれほど多くのサンプルがチャネルを通して処理される必要があるかをレポートします。
[Path Number] 編集ボックスを使用すると、指定のパスのドップラー スペクトルを可視化できます。このボックスに入力する値は、1 から PathDelays ベクトル プロパティの長さの間などの有効なパス番号でなければなりません。このフィールドの値を変更すると、現在のフレーム処理の終了直後に新しいドップラー スペクトルが表示されるようになります。
測定されたドップラー スペクトルが理論上のドップラー スペクトルの良い近似である場合、マルチパス チャネル モデルは、チャネル統計量を適切に表現するために十分なフェージング ゲインを生成しました。たとえば、マルチパス チャネルとリンクする通信の平均の BER を決定したかったり、この平均を統計的に正確に測定したい場合、チャネルが少なくとも 1 つのドップラー スペクトルの測定を生成するのに十分なサンプルを処理したか確かめたいことがあります。
マルチパス チャネル (たとえば、ライス チャネル) が 反射成分 (視線) と拡散成分の両方をもつことは可能です。そのような場合、ドップラー スペクトルは、ライン コンポーネントと広帯域コンポーネントの両方をもちます。チャネル可視化ツールのみが、ドップラー スペクトルの広帯域コンポーネントを示します。
他の可視化と異なり、ドップラー スペクトルの可視化はアニメーションをサポートしません。プロットするフレーム間データはないので、可視化ツールは各フレームの最後でのみチャネル統計量を更新し、フレームの中間では一時停止できません。一時停止モードにある別の可視化からドップラー スペクトルの可視化に切り替える場合、その後で [Pause] ボタンが無効になります。一時停止を無効にすることは、ドップラー スペクトルの可視化と他のアニメーション スタイルの可視化との間での相互作用の問題を回避します。
Scattering Function-このプロットは、マルチパス インパルス応答プロットに対して使用された同じカラー コードを使用して、各パスのドップラー スペクトルとパス遅延を示します。
散乱関数プロットの動作原理は、ドップラー スペクトル プロットの動作原理に似ています。主な違いは、このプロットのドップラー スペクトルが、べき乗の遅延の概要の可視化を優先させるために、ドップラー スペクトル プロットの場合のように正規化されていないことです。
複合プロット-いくつかの複合プロットも利用できます。[Visualization] プルダウン メニューから次を選ぶことで選択できます。
インパルス応答と周波数応答プロットの場合は [IR and FR]
マルチパス コンポーネントとマルチパス ゲインプロットの場合は [Components and Gain]
マルチパス コンポーネントとインパルス応答プロットの場合は [Components and IR]
マルチパス コンポーネント、インパルス応答、位相ベクトルの軌跡のプロットの場合は [Components, IR, and Phasor]
チャネル可視化ツールを利用する例- GUI と対話する方法を示す 2 つの例があります。
フレーム内でのサンプルのビジュアライズ-この例は、アニメーションでフレーム内のサンプルを可視化する方法を示します。次のコード行は、レイリー チャネルを作成し、チャネル可視化ツールを開きます。
% Create a fast fading channel h = rayleighchan(1e-4, 100, [0 1.1e-4], [0 0]); h.StoreHistory = 1; % Allow states to be stored y = filter(h, ones(100,1)); % Process samples through channel plot(h); % Open channel visualization tool
[Animation] メニューで可視化のオプションと速度を選択した後、[Sample index] スライダー コントロールを最も左まで移動させ、[Resume] をクリックします。スライダー コントロールは、アニメーションの間に自動的に移動します。サンプルのインデックスは、自動的に増加して可視化しているスナップショットを表示します。
ユーザーの好みでスライダー コントロールを移動させ、フレームのサンプルに目を通すこともできます。
フレームでのスナップショット アニメーション-この例は、フレームでスナップショットをアニメートする方法を示します。次のコード行は、フィルターを呼び出し、次のことを行うためにループ内でメソッドをプロットします。
Ts = 1e-4; % Sample period (s) fd = 100; % Maximum Doppler shift % Path delay and gains tau = [0.1 1.2 2.3 6.2 11.3]*Ts; PdB = linspace(0, -10, length(tau)) - length(tau)/20; nTrials = 10000; % Number of trials N = 100; % Number of samples per frame h = rayleighchan(Ts, fd, tau, PdB); % Create channel object h.NormalizePathGains = false; h.ResetBeforeFiltering = false; h.StoreHistory = 1; h % Show channel object % Channel fading simulation for trial = 1:nTrials x = randint(10000, 1, 4); dpskSig = dpskmod(x, 4); y = filter(h, dpskSig); plot(h); % The line below returns control to the command line in case % the GUI is closed while this program is still running if isempty(findobj('name', 'Multipath Channel')), break; end; end
アニメーションが実行している間、スライダー コントロールを移動させてサンプルインデックスを変更 (アニメーションの停止も) できます。[Resume] をクリックした後、プロットはアニメーションを続けます。
ResetBeforeFiltering プロパティは、チャネルの状態の情報が各フレームの処理後にリセットされないためには、false に設定される必要があります。
ページのトップへ
ライス フェージング チャネル
準静的なチャネル モデル作成
一般に、フェージング チャネルのパス ゲインは、1/(100fd) 秒の周期にわたってわずかに変化します。ここで、fd は最大ドップラー シフトです。この周期は、多くの最新の無線データ アプリケーションで非常に多くのビット数に相当するので、フェージングの統計的に重要な範囲の性能を評価するためには、膨大なデータのシミュレーションが必要になります。準静的チャネル モデルの作成は、次のステップを使って実行できる、さらに扱いが容易な方法を提供します。
最大ドップラー シフト 0 を使って、ランダムなチャネルの実現を作成
膨大なビット数の処理
誤り統計量の計算
これらのステップを何度も繰り返して、性能の尺度の分布を作成
下記の例は、準静的なチャネル モデル作成の方法を示します。
例が実行されている間、コマンド ウィンドウには、増加していくシンボル誤り数のリストがベクトル nErrors に表示されます。さらに、最後にパケット誤り率も表示されます。下記のサンプルの出力は、nErrors の最終的な値を示し、中間の値を省略します。例のランダム性のために、ユーザーの結果は異なることがあります。
nErrors = Columns 1 through 9 0 0 0 0 0 0 0 0 0 Columns 10 through 18 0 0 0 0 7 0 0 0 0 Columns 19 through 20 0 216 per = 0.1000
準静的な手法の詳細- 準静的なチャネル モデル作成の方法で計算を保存できるかを示す例として、搬送周波数が 2.4GHz、移動体の速度が 1m/s、ビット レートが 10Mb/s であるような、無線 LAN を考えます。次の式は、チャネルが 12,500 ビットに変更されることを示します。
このシステムの誤り率を計算する従来のモンテカルロ法は、上で示すように何千回もの、おそらく数千万ビット、ビット数をシミュレートすることが必要です。一方、準静的なチャネル モデル作成の方法は、100 個の位置のそれぞれにおいて、誤り率の特定の分布に達するように、少数のパケットをシミュレートします。この分布から、たとえば、通信回線が屋内のランダムな位置に対してどれほど信頼性があるかを決定できます。各シミュレーションが 5,000 ビットを含む場合、100 シミュレーションは、全部で 50万ビットを処理します。これは、従来のモンテカルロ法に比べて、大幅に少ないビット数です。
ページのトップへ
フェージング チャネルの利用に関する追加の例
次のモデルはフェージング チャネルを使用します。
ページのトップへ
0 件のコメント:
コメントを投稿