最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

WINNER II チャネル モデルを使用した複数のフェージング チャネルの同時シミュレーション

この例では、この例を実行するのに必要な WINNER II Channel Model for Communications System Toolbox™ を使用して、複数の基地局 (BS)、複数の移動局 (MS)、および 1 つの BS セクターから 1 つの MS への複数の MIMO ダウンリンクを設定する方法を示します。各リンクは伝播シナリオと条件によって割り当てられます。すべてのリンクのフェージング チャネル係数は、同時に生成されます。インパルス信号は、各リンクのフェージング チャネルを介して渡されます。選択したリンクの受信したインパルス応答と周波数応答はプロットされます。

アンテナ アレイ インベントリ

WINNER II チャネル モデルでは、各 BS は 1 つ以上のセクターで構成され、各 BS セクターと MS には 1 つのアンテナ アレイが割り当てられます。最初に、BS セクターと MS が使用できる一連のアレイを確立する必要があります。これをアンテナ アレイ インベントリと呼びます。

この例では、すべての使用可能なアンテナ アレイは等間隔円形アレイ (UCA) です。インベントリには次の 4 種類の UCA があります。

  • 半径 30 cm に 16 個の素子

  • 半径 30 cm に 12 個の素子

  • 半径 30 cm に 8 個の素子

  • 半径 5 cm に 4 個の素子

UCA 内の各アンテナ素子は無指向性です。

s = rng(21);    % For repeatability

AA(1) = winner2.AntennaArray('UCA', 16, 0.3);
AA(2) = winner2.AntennaArray('UCA', 12, 0.3);
AA(3) = winner2.AntennaArray('UCA', 8,  0.3);
AA(4) = winner2.AntennaArray('UCA', 4,  0.05);

システムのレイアウトの構成

300 x 300 (m) のマップで、3 つの BS、5 つの MS、6 つのリンクを設定します。最初の BS には、16 個の素子をもつ UCA を備えたセクターが 1 つあります。2 番目の BS にも、12 個の素子をもつ UCA を備えたセクターが 1 つあります。3 番目の BS には、8 個の素子をもつ UCA をそれぞれ備えたセクターが 3 つあります。各 MS には、4 個の素子をもつ UCA が割り当てられます。

BSIdx    = {1; 2; [3 3 3]}; % Index in antenna array inventory vector
MSIdx    = [4 4 4 4 4];     % Index in antenna array inventory vector
numLinks = 6;               % Number of links
range    = 300;             % Layout range (meters)
cfgLayout = winner2.layoutparset(MSIdx, BSIdx, numLinks, AA, range);

システム内に 6 つのリンクがモデル化されます。最初の BS は 1 番目と 2 番目の MS に接続します。2 番目の BS は 3 番目の MS に接続します。3 番目の BS では、その最初のセクターが 3 番目と 4 番目の MS に接続し、2 番目のセクターは 5 番目の MS に接続し、3 番目のセクターはどの MS にも接続しません。MS から見ると、2 番目と 3 番目の両方の BS に接続する 3 番目の MS を除いて、各 MS が 1 つの BS に接続します。各リンクには、B4 (屋外から屋内)、C2 (都市マクロセル)、C4 (都市マクロ、屋外から屋内) の中から選択された 1 つの伝播シナリオが割り当てられます。各リンクの見通し外 (NLOS) がモデル化されます。

cfgLayout.Pairing = [1 1 2 3 3 4; 6 7 8 8 9 10];  % Index in cfgLayout.Stations
cfgLayout.ScenarioVector = [6 6 13 13 11 11];     % 6 for B4, 11 for C2 and 13 for C4
cfgLayout.PropagConditionVector = [0 0 0 0 0 0];  % 0 for NLOS

3 つの BS は 0 から 300 の間隔で X 軸上に均一に配置され、Y 軸上では同じ位置に配置されます。MS の位置は、接続先の BS への距離が対応するシナリオの有効なパス損失範囲内になるように割り当てられます。具体的には、B4、C2、および C4 のシナリオの範囲は、それぞれ [3, 1000]、[50, 5000]、および [50, 5000] m です。既定では、各 BS セクターは高さ 32 m で、MS は高さ 1.5 m です。各 MS には、0.5 m/s を超えない速度で X、Y、Z のいずれかの方向が、ランダムに割り当てられます。

% Number of BS sectors and MSs in the system
numBSSect = sum(cfgLayout.NofSect);
numMS = length(MSIdx);

% Set up positions for BS sectors. Same position for the third, fourth and
% fifth sectors as they belong to one BS.
cfgLayout.Stations(1).Pos(1:2) = [50;  150];
cfgLayout.Stations(2).Pos(1:2) = [150; 150];
cfgLayout.Stations(3).Pos(1:2) = [250; 150];
cfgLayout.Stations(4).Pos(1:2) = [250; 150];
cfgLayout.Stations(5).Pos(1:2) = [250; 150];

% Set up MS positions
cfgLayout.Stations(6).Pos(1:2)  = [10;  180];  % 50m from 1st BS
cfgLayout.Stations(7).Pos(1:2)  = [60;  50];   % 111.8m from 1st BS
cfgLayout.Stations(8).Pos(1:2)  = [194; 117];  % 55m and 65m from 2nd and 3rd BSs respectively
cfgLayout.Stations(9).Pos(1:2)  = [260; 270];  % 120.4m from 3rd BS
cfgLayout.Stations(10).Pos(1:2) = [295; 90];   % 75m from 3rd BS

% Randomly draw MS velocity
for i = numBSSect + (1:numMS)
    cfgLayout.Stations(i).Velocity = rand(3,1) - 0.5;
end

システム設定を説明するため、BS と MS、およびこれらの間のリンクを 2 次元マップにプロットします。プロットでは、各 BS セクターは丸印、各 MS は十字 、各リンクは対応する BS と MS を結ぶ直線でそれぞれ示されます。3 番目の BS には 3 つのセクターがあるため、マップには 3 つの丸印だけが示されます。

% Get all BS sector and MS positions
BSPos = cell2mat({cfgLayout.Stations(1:numBSSect).Pos});
MSPos = cell2mat({cfgLayout.Stations(numBSSect+1:end).Pos});

scrsz = get(groot, 'ScreenSize');
figSize = min(scrsz([3,4]))/2.3;
figure('Position', [scrsz(3)*.5-figSize/2,scrsz(4)*.7-figSize/2,figSize,figSize]);
hold on; grid on;
hBS = plot(BSPos(1,:), BSPos(2,:), 'or');   % Plot BS
hMS = plot(MSPos(1,:), MSPos(2,:), 'xb');   % Plot MS
for linkIdx = 1:numLinks  % Plot links
    pairStn = cfgLayout.Pairing(:,linkIdx);
    pairPos = cell2mat({cfgLayout.Stations(pairStn).Pos});
    plot(pairPos(1,:), pairPos(2,:), '-b');
end
xlim([0 300]); ylim([0 300]);
xlabel('X Position (meters)'); ylabel('Y Position (meters)')
legend([hBS, hMS], 'BS', 'MS', 'location', 'northwest');

モデル パラメーターの構成

関数 winner2.wimparset で作成された構造体内には調整可能なモデル パラメーターが複数あります。この例では、中心周波数は 5.25 GHz です。リンクごとにパス損失とシャドウ フェージングがモデル化されます。最大 100 MHz の帯域幅をサポートするため、各リンクの最も強い 2 つのクラスターがそれぞれ 5 ns 間隔で 3 つのサブクラスターに分割されます。すべてのリンクは、MS の速度に応じて異なるレートでサンプリングされます。3 番目と 4 番目のリンクは同じ MS に接続するため、これらは同じサンプルレートを共有します。

frameLen = 1600;   % Number of samples to be generated

cfgWim = winner2.wimparset;
cfgWim.NumTimeSamples      = frameLen;
cfgWim.IntraClusterDsUsed  = 'yes';
cfgWim.CenterFrequency     = 5.25e9;
cfgWim.UniformTimeSampling = 'no';
cfgWim.ShadowingModelUsed  = 'yes';
cfgWim.PathLossModelUsed   = 'yes';
cfgWim.RandomSeed          = 31415926;  % For repeatability

WINNER II チャネル System object の作成

モデル コンフィギュレーションとレイアウト コンフィギュレーションを使用して、WINNER II チャネル System object を作成できるようになりました。オブジェクトが作成されると、その info メソッドを呼び出して、派生したシステム パラメーターを表示できます。たとえば、info メソッドでは、BS セクターのアレイ素子の数、MS のアレイ素子の数、および各リンクのパスの数を示す NumBSElementsNumMSElementsNumPaths の各フィールドが返されます。SampleRate フィールドには、各リンクのサンプルレートも表示されます。

WINNERChan = comm.WINNER2Channel(cfgWim, cfgLayout);
chanInfo = info(WINNERChan)
chanInfo = 

  struct with fields:

               NumLinks: 6
          NumBSElements: [16 16 12 8 8 8]
          NumMSElements: [4 4 4 4 4 4]
               NumPaths: [16 16 16 16 24 24]
             SampleRate: [1x6 double]
     ChannelFilterDelay: [4 4 4 4 4 4]
    NumSamplesProcessed: 0

各リンクのインパルス信号の処理

各リンクを介してインパルス信号を渡し、MS でインパルス応答と周波数応答を観察します。これを行うには、各リンクのインパルス信号を作成し、それらをセル配列に集約する必要があります。これは、info メソッドで返される NumBSElements フィールドと関数 cellfun を使用することで実行できます。インパルス信号のセル配列は、チャネル オブジェクトで処理されます。

txSig = cellfun(@(x) [ones(1,x);zeros(frameLen-1,x)], ...
    num2cell(chanInfo.NumBSElements)', 'UniformOutput', false);

% Pass impulse signal through each link
rxSig = WINNERChan(txSig);

MS で受信した信号をプロットすることで、フェージング チャネルのインパルス応答と周波数応答が各リンクでどのように見えるかを確認できます。各 MS の 4 つのアンテナのうち、最初のアンテナで受信された信号だけがプロットされます。異なるレートでリンクがサンプリングされることは、インパルス応答プロットで取得されます。各リンクについて、チャネル フィルターの遅延から最初のいくつかのサンプルが、負の時間軸にプロットされます (ある場合)。

figure('Position', [scrsz(3)*.3-figSize/2,scrsz(4)*.25-figSize/2,figSize,figSize]);
hold on;
for linkIdx = 1:numLinks
    delay = chanInfo.ChannelFilterDelay(linkIdx);
    stem(((0:(frameLen-1))-delay)/chanInfo.SampleRate(linkIdx), ...
        abs(rxSig{linkIdx}(:,1)));
end
maxX = max((cell2mat(cellfun(@(x) find(abs(x) < 1e-8, 1, 'first'), ...
    rxSig.', 'UniformOutput', false)) - chanInfo.ChannelFilterDelay)./ ...
    chanInfo.SampleRate);
minX = -max(chanInfo.ChannelFilterDelay./chanInfo.SampleRate);
xlim([minX, maxX]);
xlabel('Time (s)'); ylabel('Magnitude');
legend('Link 1', 'Link 2', 'Link 3', 'Link 4', 'Link 5', 'Link 6');
title('Impulse Response at First Receive Antenna');

3 番目と 4 番目のリンクは同じ MS に接続するため、サンプルレートが同じであるため、Spectrum Analyzer System object を使用してこれらをまとめてプロットします。2 つのリンクにはそれぞれ 16 のパスがあり、著しい周波数選択性を示します。

SA = dsp.SpectrumAnalyzer( ...
    'Name',         'Frequency response', ...
    'SpectrumType', 'Power density', ...
    'SampleRate',   chanInfo.SampleRate(3), ...
    'Position',     [scrsz(3)*.7-figSize/2,scrsz(4)*.25-figSize/2,figSize,figSize], ...
    'Title',        'Frequency Response', ...
    'ShowLegend',   true, ...
    'ChannelNames', {'Link 3','Link 4'});

SA(cell2mat(cellfun(@(x) x(:,1), rxSig(3:4,1)', 'UniformOutput', false)));

rng(s); % Restore RNG

その他の調査

この例は、WINNER II フェージング チャネル System object を構成して BS から MS への複数の MIMO リンクをもつシステムをモデル化する方法を示します。さらに詳しく調査する場合は、cfgLayoutcfgWim のフィールドを変更して、等間隔直線アレイ (ULA)、BS/MS の位置と組み合わせ、伝播シナリオと条件などの、さまざまなアンテナ アレイのモデル化を行ってください。

3 番目と 4 番目のリンクは同じ MS に接続するため、2 つのリンクでのチャネル フィルターの遅延の原因となるサンプルを適切にオフセットすることで、両方のリンクから受信した信号を結合できます。

参考文献

  1. IST WINNER II, "WINNER II Channel Models", D1.1.2, Sep. 2007.