Main Content

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

comm.RicianChannel

マルチパス ライス フェージング チャネルによる入力信号のフィルター処理

説明

comm.RicianChannel System object™ は、マルチパス ライス フェージング チャネルによる入力信号をフィルター処理します。フェージング モデルの処理の詳細については、マルチパス フェージング チャネルのシミュレーションの方法論の節を参照してください。

マルチパス ライス フェージング チャネルによる入力信号をフィルター処理するには、以下の手順に従います。

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

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

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

作成

説明

ricianchan = comm.RicianChannel は、周波数選択性または周波数フラット マルチパス ライス フェージング チャネル System object を作成します。このオブジェクトは、マルチパス チャネルからの実数または複素数の入力信号をフィルター処理して、チャネルで劣化した信号を取得します。

ricianchan = comm.RicianChannel(Name,Value) は、名前と値からなる 1 つ以上の引数を使用してプロパティを設定します。たとえば、'SampleRate',2 は入力信号のサンプル レートを 2 に設定します。

プロパティ

すべて展開する

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

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

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

入力信号のサンプルレート (Hz 単位)。正のスカラーとして指定します。

データ型: double

離散パスの遅延 (秒)。スカラーまたは行ベクトルとして指定します。

  • PathDelays をスカラーに設定すると、チャネルは周波数フラットになります。

  • PathDelays をベクトルに設定すると、チャネルは周波数選択性になります。

PathDelays プロパティおよび AveragePathGains プロパティの長さは同じでなければなりません。

データ型: double

離散パスの平均ゲイン (デシベル単位)。スカラーまたは行ベクトルとして指定します。AveragePathGains プロパティおよび PathDelays プロパティの長さは同じでなければなりません。

データ型: double

平均パス ゲインの正規化。次のいずれかの論理値として指定します。

  • 1 (true) — フェージング処理が正規化され、長時間で平均したパス ゲインの強度の総和は 0 dB になります。

  • 0 (false) — パス ゲインの強度の総和は正規化されません。

AveragePathGains プロパティは、パス ゲインの平均強度を指定します。

データ型: logical

ライス フェージング チャネルの K ファクター。正のスカラーまたは非負の値の 1 行 NP 列のベクトルとして指定します。NP は、PathDelays プロパティにより指定される離散パス遅延の数です。

  • KFactor をスカラーに設定した場合、最初の離散パスはライス K ファクターが KFactor のライス フェージング処理です。残りの離散パスは、独立したレイリー フェージング処理になります。

  • KFactor をベクトルに設定した場合、KFactor ベクトルの正の要素に対応する離散パスは、この要素によってライス K ファクターが指定されるライス フェージング処理です。KFactor ベクトルのゼロ値の要素に対応する離散パスはレイリー フェージング処理です。少なくとも 1 つの要素は非ゼロでなければなりません。

データ型: double

マルチパス ライス フェージング チャネルの見通し内成分のドップラー シフト。スカラーまたは行ベクトルとして指定します。単位はヘルツです。このプロパティは KFactor プロパティと同じサイズでなければなりません。

  • DirectPathDopplerShift をスカラーに設定した場合、この値は最初の離散パスの見通し内成分のドップラー シフトを表します。このパスはライス フェージング処理を示します。

  • DirectPathDopplerShift を行ベクトルに設定した場合、KFactor ベクトルの正の要素に対応する離散パスがライス フェージング処理となります。DirectPathDopplerShift の対応する要素が、その離散パスのドップラー シフトの見通し内成分を指定します。

データ型: double

マルチパス ライス フェージング チャネルの見通し内成分の初期位相。スカラーまたは行ベクトルとして指定します。単位はラジアンです。このプロパティは KFactor プロパティと同じサイズでなければなりません。

  • DirectPathInitialPhase をスカラーに設定した場合、この値は最初の離散パスの見通し内成分の初期位相を表します。このパスはライス フェージング処理を示します。

  • DirectPathInitialPhase を行ベクトルに設定した場合、KFactor ベクトルの正の要素に対応する離散パスがライス フェージング処理となります。DirectPathInitialPhase の対応する要素が、その離散パスの見通し内成分の初期位相を指定します。

データ型: double

すべてのチャネル パスの最大ドップラー シフト。非負のスカラーとして指定します。単位はヘルツです。

最大ドップラー シフトの制限は各チャネル パスに適用されます。このプロパティを 0 に設定すると、チャネルは入力全体に対して静的になります。新しいチャネルは、オブジェクト関数 reset を使用して生成できます。MaximumDopplerShift プロパティの値は各パスについて SampleRate/10/fc より小さくなければなりません。fc はそのパスのカットオフ周波数係数です。ほとんどのドップラー スペクトル タイプでは、fc の値は 1 です。ガウスおよび二重ガウス ドップラー スペクトル タイプでは、fc の値はドップラー スペクトル構造体フィールドによって異なります。fc の定義方法の詳細については、カットオフ周波数係数の節を参照してください。

データ型: double

すべてのチャネル パスのドップラー スペクトルの形状。ドップラー スペクトル構造体またはドップラー スペクトル構造体の 1 行 NP 列の cell 配列として指定します。これらのドップラー スペクトル構造体は、関数 doppler から返される形式の出力でなければなりません。NP は、PathDelays プロパティにより指定される離散遅延パスの数です。MaximumDopplerShift プロパティは、ドップラー スペクトルを指定する際に、DopplerSpectrum プロパティで許容される最大ドップラー シフトの値を定義します。

  • DopplerSpectrum を単一のドップラー スペクトル構造体に設定すると、すべてのパスは、指定された同じドップラー スペクトルを持ちます。

  • DopplerSpectrum をドップラー スペクトル構造体の cell 配列に設定すると、それぞれのパスは、cell 配列内の対応する構造体で指定されるドップラー スペクトルを持ちます。

スペクトル タイプのオプションは、関数 doppler への specType 入力を使用して指定されます。FadingTechnique プロパティを 'Sum of sinusoids' に設定する場合、DopplerSpectrumdoppler('Jakes') に設定しなければなりません。

依存関係

このプロパティを有効にするには、MaximumDopplerShift プロパティを正のスカラーに設定します。

データ型: struct | cell

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

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

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

データ型: logical

チャネル パス ゲインの出力。logical 0 (false) または 1 (true) として指定します。このプロパティを true に設定すると、潜在的なフェージング処理のチャネル パス ゲインが出力されます。

依存関係

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

データ型: logical

フェージング処理の期間に使用するサンプル数。非負の整数として指定します。

調整可能: Yes

依存関係

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

データ型: double

パス ゲイン出力のデータ型。'double' または 'single' を指定します。

依存関係

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

データ型: char | string

チャネルのモデル化のフェージング手法。'Filtered Gaussian noise' または 'Sum of sinusoids' として指定します。

データ型: char | string

フェージング処理のモデル化に使用される正弦波の数。正の整数で指定します。

依存関係

このプロパティを有効にするには、FadingTechnique プロパティを 'Sum of sinusoids' に設定します。

データ型: double

フェージング処理の開始時間を制御するソース。'Property' または 'Input port' として指定します。

  • InitialTimeSource'Property' に設定する場合は、InitialTime プロパティを使用して初期時間オフセットを設定します。

  • InitialTimeSource'Input port' に設定されている場合、inittime 入力引数を使用して、フェージング処理の開始時間を指定します。入力値は、オブジェクトに対する連続呼び出しで変更できます。

依存関係

このプロパティを有効にするには、FadingTechnique プロパティを 'Sum of sinusoids' に設定します。

データ型: char | string

フェージング モデルの初期時間オフセット (秒)。非負のスカラーで指定します。

mod(InitialTime/SampleRate) が非ゼロの場合、初期時間オフセットは最も近い整数方向のサンプル位置に切り上げられます。

依存関係

このプロパティを有効にするには、FadingTechnique プロパティを 'Sum of sinusoids' に、InitialTimeSource プロパティを 'Property' に設定します。

データ型: double

乱数ストリームのソース。'Global stream' または 'mt19937ar with seed' として指定します。

  • 'Global stream' を指定すると、オブジェクトは乱数発生に現在のグローバル乱数ストリームを使用します。この場合、オブジェクト関数 reset はフィルターのリセットのみを行います。

  • 'mt19937ar with seed' を指定すると、オブジェクトは乱数発生に mt19937ar アルゴリズムを使用します。この場合、オブジェクト関数 reset はフィルターをリセットし、乱数ストリームを Seed プロパティの値に再初期化します。

データ型: char | string

mt19937ar 乱数ストリーム発生器のアルゴリズムの初期シード。非負の整数を指定します。オブジェクト関数 reset を呼び出すと、mt19937ar 乱数ストリームが Seed の値に再初期化されます。

依存関係

このプロパティを有効にするには、RandomStream プロパティを 'mt19937ar with seed' に設定します。

データ型: double

チャネルの可視化。'Off''Impulse response''Frequency response''Impulse and frequency responses'、または 'Doppler spectrum' として指定します。詳細については、チャネルの可視化のトピックを参照してください。

依存関係

このプロパティを有効にするには、FadingTechnique プロパティを 'Filtered Gaussian noise' に設定します。

データ型: char | string

ドップラー スペクトルの表示に使用するパス。範囲 [1, NP] の正の整数として指定します。NP は、PathDelays プロパティにより指定される離散遅延パスの数です。このプロパティを使用して、ドップラー スペクトル プロットの構築に使用される離散パスを選択します。

依存関係

このプロパティを有効にするには、Visualization プロパティを 'Doppler spectrum' に設定します。

データ型: double

表示するサンプルの割合。'25%''10%''50%'、または '100%' として指定します。パーセンテージを大きくすると表示の精度が向上しますが、シミュレーションの速度が低下します。

依存関係

このプロパティを有効にするには、Visualization プロパティを 'Impulse response''Frequency response'、または 'Impulse and frequency responses' に設定します。

データ型: char | string

使用法

説明

y = ricianchan(x) は、マルチパス ライス フェージング チャネルを通して入力信号 x をフィルター処理し、y に結果を返します。

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

y = ricianchan(x,inittime) は、フェージング処理の開始時間を指定します。

この構文を有効にするには、FadingTechnique プロパティを 'Sum of sinusoids' に設定し、InitialTimeSource プロパティを 'Input port' に設定します。

[y,pathgains] = ricianchan(___) はまた、前の構文の入力引数を任意に組み合わせて使用して、潜在的なマルチパス ライス フェージング処理のチャネル パス ゲインを pathgains に返します。

この構文を有効にするには、PathGainsOutputPort プロパティを true に設定します。

pathgains = ricianchan() は、潜在的なフェージング処理のチャネル パス ゲインを返します。この場合、チャネルは入力信号を必要とせず、パス ゲインのソースとして機能します。

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

pathgains = ricianchan(inittime) は、指定された初期時間で開始する潜在的なフェージング処理のチャネル パス ゲインを返します。この場合、チャネルは入力信号を必要とせず、パス ゲインのソースとして機能します。

この構文を有効にするには、FadingTechnique プロパティを 'Sum of sinusoids' に、InitialTimeSource プロパティを 'Input port' に、ChannelFiltering プロパティを false に設定します。

入力引数

すべて展開する

入力信号。NS 行 1 列のベクトル (NS はサンプル数) として指定します。

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

秒単位の初期時間オフセット。非負のスカラーとして指定します。

mod(inittime/SampleRate) が非ゼロの場合、初期時間オフセットは最も近い整数方向のサンプル位置に切り上げられます。

データ型: single | double

出力引数

すべて展開する

出力信号。入力信号 x と同じデータ精度の複素数値の NS 行 1 列のベクトルとして返されます。NS は、サンプル数です。

出力パス ゲイン。NS 行 NP 列の行列として返されます。NS は、サンプル数です。NP は、PathDelays プロパティにより指定される離散遅延パスの数です。pathgains には複素数値が含まれています。

ChannelFiltering プロパティを false に設定すると、この出力のデータ型は、入力信号 x と同じ精度を持ちます。ChannelFiltering プロパティを true に設定すると、この出力のデータ型は OutputDataType プロパティで指定されます。

オブジェクト関数

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

release(obj)

すべて展開する

infoフェージング チャネル オブジェクトの特性情報
stepSystem object のアルゴリズムの実行
releaseリソースを解放し、System object のプロパティ値と入力特性の変更を可能にします。
resetSystem object の内部状態のリセット

すべて折りたたむ

2 つの異なる乱数発生方法を使用して、同じマルチパス ライス フェージング チャネル応答を作成します。マルチパス ライス フェージング チャネル System object には 2 つの乱数発生方法が含まれています。現在のグローバル ストリーム、またはシードを指定した mt19937ar アルゴリズムを使用できます。グローバル ストリームと対話することで、System object は、2 つの方法から同じ出力を生成できます。

PSK 変調器 System object を作成して、ランダムに生成されたデータを変調します。

pskModulator = comm.PSKModulator;
insig = randi([0,pskModulator.ModulationOrder-1],1024,1);
channelInput = pskModulator(insig);

乱数発生方法を my19937ar アルゴリズムに、乱数シードを 73 に指定して、マルチパス ライス フェージング チャネル System object を作成します。

ricianchan = comm.RicianChannel( ...
    'SampleRate',1e6, ...
    'PathDelays',[0.0 0.5 1.2]*1e-6, ...
    'AveragePathGains',[0.1 0.5 0.2], ...
    'KFactor',2.8, ...
    'DirectPathDopplerShift',5.0, ...
    'DirectPathInitialPhase',0.5, ...
    'MaximumDopplerShift',50, ...
    'DopplerSpectrum',doppler('Bell', 8), ...
    'RandomStream','mt19937ar with seed', ...
    'Seed',73, ...
    'PathGainsOutputPort',true);

マルチパス ライス フェージング チャネル System object を使用して、変調されたデータをフィルター処理します。

[RicianChanOut1,RicianPathGains1] = ricianchan(channelInput);

System object が乱数発生にグローバル ストリームを使用するよう設定します。

release(ricianchan);
ricianchan.RandomStream = 'Global stream';

マルチパス ライス フェージング チャネル System object の作成時に指定されたのと同じシードを持つよう、グローバル ストリームを設定します。

rng(73)

マルチパス ライス フェージング チャネル System object を使用して、変調されたデータを再度フィルター処理します。

[RicianChanOut2,RicianPathGains2] = ricianchan(channelInput);

2 つの方法のそれぞれについて、チャネルおよびパス ゲインの出力が同じかどうかを検証します。

isequal(RicianChanOut1,RicianChanOut2)
ans = logical
   1

isequal(RicianPathGains1,RicianPathGains2)
ans = logical
   1

チャネル フィルター処理を無効にするように構成されている周波数選択性マルチパス ライス フェージング チャネルの、インパルス応答および周波数応答を表示します。

シミュレーション変数を定義します。ITU 歩行者 B チャネル構成を使用してパスの遅延とゲインを指定します。

fs = 3.84e6;                                  % Sample rate in Hz
pathDelays = [0 200 800 1200 2300 3700]*1e-9; % in seconds
avgPathGains = [0 -0.9 -4.9 -8 -7.8 -23.9];   % dB
kfact = 10;                                   % Rician K-factor
fD = 50;                                      % Max Doppler shift in Hz

マルチパス ライス フェージング チャネル System object を作成し、インパルス応答プロットと周波数応答プロットを可視化します。

ricianChan = comm.RicianChannel( ...
    SampleRate=fs, ...
    PathDelays=pathDelays, ...
    AveragePathGains=avgPathGains, ...
    KFactor=kfact, ...
    MaximumDopplerShift=fD, ...
    ChannelFiltering=false, ...
    Visualization='Impulse and frequency responses');

入力信号なしでマルチパス ライス フェージング チャネル System object のを実行して、チャネル応答を可視化します。インパルス応答プロットにより、個々のパスとそれに対応するフィルター係数を特定できます。周波数応答プロットは、ITU 歩行者 B チャネルの周波数選択性を示しています。

ricianChan();

正弦波加算手法を使用するマルチパス ライス フェージング チャネル System object を使用して、不連続送信のためにチャネル状態が維持されていることを示します。連続チャネル応答に重なる不連続チャネル応答セグメントを観測します。

チャネルのプロパティを設定します。

fs = 1000;               % Sample rate in Hz
pathDelays = [0 2.5e-3]; % In seconds
pathPower = [0 -6];      % In dB
fD = 5;                  % Maximum Doppler shift in Hz
ns = 1000;               % Number of samples
nsdel = 100;             % Number of samples for delayed paths

連続時間範囲と 3 つの不連続時間セグメントを定義します。この上にチャネル応答をプロットして表示します。時刻 0 から開始する 1000 サンプル連続チャネル応答と、時刻 0.1 秒、0.4 秒、および 0.7 秒から開始する 3 つの 100 サンプル チャネル応答をそれぞれ表示します。

to0 = 0.0;
to1 = 0.1;
to2 = 0.5;
to3 = 0.8;
t0 = (to0:ns-1)/fs;      % Transmission 0
t1 = to1+(0:nsdel-1)/fs; % Transmission 1
t2 = to2+(0:nsdel-1)/fs; % Transmission 2
t3 = to3+(0:nsdel-1)/fs; % Transmission 3

1000 Hz サンプリング レート、正弦波加算フェージング手法、チャネル フィルター処理の無効化、および表示するサンプル数を指定して、周波数フラット マルチパス ライス フェージング チャネル System object を作成します。結果を反復できるように、シードの値を指定します。既定の InitialTime プロパティ設定を使用して、フェージング チャネルが時刻 0 からシミュレーションされるようにします。

ricianchan1 = comm.RicianChannel('SampleRate',fs, ...
    'MaximumDopplerShift',fD, ...
    'RandomStream','mt19937ar with seed', ...
    'Seed',17, ...
    'FadingTechnique','Sum of sinusoids', ...
    'ChannelFiltering',false, ...
    'NumSamples',ns);

マルチパス ライス フェージング チャネル System object のクローンを作成します。遅延パスのサンプル数を設定します。初期時間のソースを設定して、System object を使用する際にフェージング チャネルのオフセット時間を入力引数として指定できるようにします。

ricianchan2 = clone(ricianchan1);
ricianchan2.InitialTimeSource = 'Input port';
ricianchan2.NumSamples = nsdel;

ricianchan1 オブジェクトを使用して連続チャネル応答のパス ゲイン出力を保存し、初期時間オフセットを入力引数として指定した ricianchan2 オブジェクトを使用して、不連続遅延チャネル応答のパス ゲイン出力を保存します。

pg0 = ricianchan1();
pg1 = ricianchan2(to1);
pg2 = ricianchan2(to2);
pg3 = ricianchan2(to3);

オブジェクト関数 info を使用して、2 つのチャネルによって処理されたサンプル数を比較します。ricianchan1 オブジェクトは 1000 サンプルを処理しましたが、ricianhan2 オブジェクトは 300 サンプルしか処理していません。

G = info(ricianchan1);
H = info(ricianchan2);
[G.NumSamplesProcessed H.NumSamplesProcessed]
ans = 1×2

        1000         300

パス ゲインをデシベルに変換します。

pathGain0 = 20*log10(abs(pg0));
pathGain1 = 20*log10(abs(pg1));
pathGain2 = 20*log10(abs(pg2));
pathGain3 = 20*log10(abs(pg3));

連続的な場合と非連続的な場合のパス ゲインをプロットします。3 つのセグメントのゲインが、連続的な場合のゲインに一致します。データが送信されていない場合でもチャネル特性が保たれるため、2 つのプロットの一致は、正弦波加算手法が、パケット化されたデータのシミュレーションに適していることを強調しています。

plot(t0,pathGain0,'r--')
hold on
plot(t1,pathGain1,'b')
plot(t2,pathGain2,'b')
plot(t3,pathGain3,'b')
grid
xlabel('Time (s)')
ylabel('Path Gain (dB)')
legend('Continuous','Discontinuous','location','nw')
title('Continuous and Discontinuous Transmission Path Gains')

Figure contains an axes object. The axes object with title Continuous and Discontinuous Transmission Path Gains, xlabel Time (s), ylabel Path Gain (dB) contains 4 objects of type line. These objects represent Continuous, Discontinuous.

comm.RicianChannel System object のオブジェクト関数 info で返される ChannelFilterCoefficients プロパティを使用して、マルチパス ライス フェージング チャネルの出力を再現します。

2 つのパスを定義し、マルチパス ライス フェージング チャネル System object を作成します。データを生成し、チャネルを介してデータを渡します。

ricianchan = comm.RicianChannel( ...
    'SampleRate',1000, ...
    'PathDelays',[0 1e-3], ...
    'AveragePathGains',[0 -2], ...
    'PathGainsOutputPort',true)
ricianchan = 
  comm.RicianChannel with properties:

                SampleRate: 1000
                PathDelays: [0 1.0000e-03]
          AveragePathGains: [0 -2]
        NormalizePathGains: true
                   KFactor: 3
    DirectPathDopplerShift: 0
    DirectPathInitialPhase: 0
       MaximumDopplerShift: 1.0000e-03
           DopplerSpectrum: [1x1 struct]
          ChannelFiltering: true
       PathGainsOutputPort: true

  Use get to show all properties

data = randi([0 1],600,1);

チャネルを通してデータを渡します。ChannelFilterCoefficients プロパティの値を変数 coeff に代入します。

[chanout1,pg] = ricianchan(data);
chaninfo = info(ricianchan)
chaninfo = struct with fields:
           ChannelFilterDelay: 0
    ChannelFilterCoefficients: [2x2 double]
          NumSamplesProcessed: 600

coeff = chaninfo.ChannelFilterCoefficients;

coeff に格納されたパス遅延の位置における、非整数遅延の入力信号を計算します。

Np = length(ricianchan.PathDelays);
fracdelaydata = zeros(size(data,1),Np);
for ii = 1:Np
    fracdelaydata(:,ii) = filter(coeff(ii,:),1,data);
end

パス ゲインを適用し、すべてのパスについての結果を合計します。

chanout2 = sum(pg .* fracdelaydata,2);

マルチパス ライス フェージング チャネル System object の出力を、マルチパス ライス フェージング チャネル System object のパス ゲインと ChannelFilterCoefficients プロパティを使用して再現された出力と比較します。

isequal(chanout1,chanout2)
ans = logical
   1

1 つのパスを持つライス チャネルの経験上の確率密度関数 (PDF) と理論上の確率密度関数 (PDF) を計算してプロットします。

パラメーターを初期化し、チャネル フィルター処理を適用しないライス チャネル System object を作成します。

Ns = 1.92e6;
Rs = 1.92e6;
dopplerShift = 2000;
KFactor = -3;                  % In dB
KFactorLin = 10.^(KFactor/10); % Linear units

chan = comm.RicianChannel( ...
    'SampleRate',Rs, ...
    'PathDelays',0, ...
    'KFactor',KFactorLin, ...
    'AveragePathGains',0, ...
    'MaximumDopplerShift',dopplerShift, ...
    'ChannelFiltering',false, ...
    'NumSamples',Ns, ...
    'FadingTechnique','Sum of sinusoids');

関数fitdist (Statistics and Machine Learning Toolbox)およびpdf (Statistics and Machine Learning Toolbox)を使用し、ライス チャネルの経験上の PDF と理論上の PDF を計算してプロットします。

figure;
hold on;

% Empirical PDF plot
gain = chan();
pd = fitdist(abs(gain),'Kernel','BandWidth',.01);
r = 0:.1:3;
y = pdf(pd,r);
plot(r,y)

% Theoretical PDF plot
s = sqrt(KFactorLin)/sqrt(KFactorLin+1);
sigma = sqrt(1/2)/sqrt(KFactorLin+1);
exp_pdf_amplitude = pdf('Rician',r,s,sigma);
plot(r,exp_pdf_amplitude')
legend('Empirical','Theoretical')
title('Empirical and Theoretical PDF Curves')

Figure contains an axes object. The axes object with title Empirical and Theoretical PDF Curves contains 2 objects of type line. These objects represent Empirical, Theoretical.

1 つのパスを持つライス チャネルの経験上の累積分布関数 (CDF) と理論上の累積分布関数 (CDF) を計算してプロットします。

パラメーターを初期化し、チャネル フィルター処理を実行しないライス チャネル System object を作成します。

Ns = 1.92e6;
Rs = 1.92e6;
dopplerShift = 2000;
KFactor = -3;                  % In dB
KFactorLin = 10.^(KFactor/10); % Linear units

chan = comm.RicianChannel( ...
    'SampleRate',Rs, ...
    'PathDelays',0, ...
    'KFactor',KFactorLin, ...
    'AveragePathGains',0, ...
    'MaximumDopplerShift',dopplerShift, ...
    'ChannelFiltering',false, ...
    'NumSamples',Ns, ...
    'FadingTechnique','Sum of sinusoids');

関数ecdf (Statistics and Machine Learning Toolbox)およびcdf (Statistics and Machine Learning Toolbox)を使用し、ライス チャネルの経験上の CDF と理論上の CDF を計算してプロットします。パス ゲインを使用して経験上の CDF を計算します。

% Empirical CDF plot
g = chan();
ecdf(abs(g));
hold on;

% Theoretical CDF plot
r = 0:.1:3;
s = sqrt(KFactorLin)/sqrt(KFactorLin+1);
sigma = sqrt(1/2)/sqrt(KFactorLin+1);
exp_cdf_amplitude = cdf('Rician',r,s,sigma);
plot(r,exp_cdf_amplitude')
legend('Emp','Theor')
title('Empirical and Theoretical CDF Curves')

Figure contains an axes object. The axes object with title Empirical and Theoretical CDF Curves, xlabel x, ylabel F(x) contains 2 objects of type stair, line. These objects represent Emp, Theor.

詳細

すべて展開する

参照

[1] Oestges, Claude, and Bruno Clerckx. MIMO Wireless Communications: From Real-World Propagation to Space-Time Code Design. 1st ed. Boston, MA: Elsevier, 2007.

[2] Correia, Luis M., and European Cooperation in the Field of Scientific and Technical Research (Organization), eds. Mobile Broadband Multimedia Networks: Techniques, Models and Tools for 4G. 1st ed. Amsterdam ; Boston: Elsevier/Academic Press, 2006.

[3] Kermoal, J.P., L. Schumacher, K.I. Pedersen, P.E. Mogensen, and F. Frederiksen. “A Stochastic MIMO Radio Channel Model with Experimental Validation.” IEEE Journal on Selected Areas in Communications 20, no. 6 (August 2002): 1211–26. https://doi.org/10.1109/JSAC.2002.801223.

[4] Jeruchim, Michel C., Philip Balaban, and K. Sam Shanmugan. Simulation of Communication Systems. Second edition. Boston, MA: Springer US, 2000.

[5] Patzold, M., Cheng-Xiang Wang, and B. Hogstad. “Two New Sum-of-Sinusoids-Based Methods for the Efficient Generation of Multiple Uncorrelated Rayleigh Fading Waveforms.” IEEE Transactions on Wireless Communications 8, no. 6 (June 2009): 3122–31. https://doi.org/10.1109/TWC.2009.080769.

拡張機能

バージョン履歴

R2013b で導入

すべて展開する