フェージングプロファイル関数の使い方 (2)


こんにちは、ドルフィンシステムの笹生です。

本日も前回に引き続き、LabVIEW モジュレーションツールキットにあるフェージングプロファイルの使い方についてより具体的に取り上げたいと思います。

今回は具体的に
Flat + Rayleigh + Gans
で使用してみてどのような結果を得られるか検証してみたいと思います。


どんなフェージングプロファイル?

前回のおさらいですが、フェージングとして選択できるモデルは大きなところで
・Flat Fading (遅延波なし)
・Selective Fading (遅延波あり 周波数選択性フェージング)
の2つから選択します。
さらにそれぞれ
・Rayleigh (直接波なし)
・Rician (直接波あり)
の2つから選択でき、さらに生成アルゴリズムのモデルとして
・Gans (フィルタモデル)
・Jakes (サブパスモデル)
の2つのモデルから選択できます。


組み合わせとして合計 8 通りのモデルから選択できることになります。
その組み合わせのうちの
・Flat + Rayleigh + Gans
を今回は指定します。この設定で生成されるのは言葉で言いますと
・遅延して到来する電波はなく(Flat)、直接波もない移動通信で (Rayleigh)、Gans という方式で生成する
というフェージングを生成することになります。
このフェージングでは、振幅だけは変動(レイリー変動)しますが、遅延波がないので周波数軸で見ると信号全体がフラットに上下するような影響を受けます。
フェージングの単純なサンプル例

フェージングプロファイル生成

まず、無線信号にフェージングを適用する前に、このフェージングプロファイル関数を実行して実際にフェージングプロファイルを生成する必要があります。

最終的に無線信号にフェージングを適用するということは、「無線信号と生成したフェージングプロファイルの掛け算」になります。その掛け算する値であるフェージングプロファイルを予め生成をすることに他なりません。
(なぜ、フェージングのプロファイル生成関数と適用する関数が別になっているのかということに関しましては残念ながらはっきりわかりません。フェージングプロファイル自体の計算が重いと考えられるため、同じフェージングプロファイルを繰り返し適用するのであれば、適用する関数と別にしておいたほうが演算処理が軽くなるということだからでしょうか。。。)


端子 (引数)
意味
profile length (samples)
出力されるフェージングプロファイルのサンプル数を指定します。基本的には適用したい無線信号のサンプル数と同数にしたほうがわかりやすいので良いと思います。しかし必ずしも同数でなくてもエラーはしないようです。
sampling frequency (Hz)
サンプリング周波数を Hz で設定します。こちらも基本的には無線信号のサンプル周波数と合わせるのが良いと思います。しかし必ずしも同じでなくても設定できますが、わかりにくくなるので同じ設定のほうが良いと思われます。
doppler spread (Hz)
ドップラー周波数の広がりを Hz で指定します。この設定が意外とわかりにくく、広がりなしとして 0 Hz を指定するとエラーします。
この引数は設定範囲が決まっており、上記で設定した[サンプリング周波数 * 1e-6]以上 [サンプリング周波数 * 0.5]未満 の値を設定する必要があります。
seed in
これはフェージングプロファイル生成のシード値で、-1 では毎回ランダムな初期値から生成することになります。
fading variance
レイリー分布の分散を指定します。通常はデフォルトのまま 1.0 でよいと思います。
reset (T)
デフォルトではリセットする設定です。
fading profile
生成したフェージングプロファイルの出力です。フェージングを適用する関数で使用します。複素数の配列で生成され、配列要素数はprofile lengthで指定した数になります。
seed out
フェージングプロファイル生成後のシード値です。

仕様上仕方がないのかもしれませんが、昨今の広帯域な無線信号に対して非常に遅いドップラーをかけることは困難かもしれません。例えば 100MHz のサンプルレートたと最低でも 100Hz のドップラーを掛ける必要があり、もし搬送波は低い場合には結構速いスピードで移動していることを想定することになります。
例えば 100Hz のドップラーは 1GHz の搬送波であれば時速110km/h 程度の移動速度になってしまいます。

フェージングの適用

フェージングの適用では、無線信号と生成したフェージングプロファイルを適用する関数に接続し、出力であるフェージングがかかった無線信号を次の関数に渡します。


サンプルを作成して実行してみます

さて実際にサンプルを作成して実行してみます。

大きく 4つの部分に分けています。
①無線信号に相当する信号の生成 (送信に相当)
②フェージングプロファイルの生成
③フェージング適用 (伝搬路に相当)
④表示 (受信に相当)

①無線信号に相当する信号の設定
正弦波です。I に対して Q を 90 度位相をずらした複素数信号にしています。

サンプルレート
1000 (Hz)
一回の生成サンプル数
1000サンプル
②フェージングプロファイルの生成
生成したいフェージングは先ほどの
・Flat Rayleigh Fading (Gans)
になります。
その上で以下の設定をします。
項目
設定値
profile length
1000 サンプル
sampling frequency
1000 Hz
doppler spread
0.1 Hz
fading variance
1
reset
F
③フェージング適用 
ここでは特に設定は必要なく、無線信号とフェージングプロファイルを使ってフェージングを適用します。

④表示
ここではフェージングの適用状況を確認するために、
・無線信号のグラフ
・フェージングプロファイルのグラフ
・適用後のグラフ
の3点を表示してみました。

実行結果


さて、このスナップショットだけだと無線信号にフェージングプロファイルが乗算されることで適用されたグラフになりそうなことは判るのですが、次のループでも似たような結果で、フェージングプロファイルが前回の最後と、今回の最初がつながらないような現象が起きてしまいました。
また必ず、500サンプル目付近が振幅ほぼ 0 になってしまいます。
本来、reset =F にしているので、前回から継続して生成されるはずなのですが、、、

doppler spread を早くしたり、サンプル数を多くすれば、フェージング適用具合としてよりフェージングっぽい振る舞いは確認することはできます。ただ、こちらも連続しているかといわれると、していないようなのです。。。
確認のためフェージングプロファイルを 2回分つなげたグラフで確認してみました。1000ポイント目が不連続になっていました。

色々試してみたのですが、残念ながら連続にさせることが私にはできませんでした。

まとめ

今回は Flat Rayleigh Fading (Gans) を具体的に使ってみました。
ただ私の設定がまずいのか、フェージングプロファイルの波形は連続になりませんでした。
そのため、使用するときには、1回の処理でキリが良いデータで実行させたほうが良いようです。
例えば、無線信号の 1フレームのサイズ単位ですとか、不連続でも次に影響がないサイズで実行するのがコツのようです。
また、広帯域信号の時に遅いドップラーを指定できないので、搬送波が低い想定の場合には注意が必要です。
次回は Selective + Rice+ Jakes を使ってみたいと思います。

0 件のコメント :

コメントを投稿