このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
WINNER II チャネル モデルを使用した複数のフェージング チャネルの同時シミュレーション
この例では、複数の基地局 (BS)、複数の移動局 (MS)、および 1 つの BS セクターから 1 つの MS への複数の MIMO ダウンリンクを使用してシステムを設定する方法を示します。この例を実行するには、WINNER II Channel Model for Communications Toolbox™ のアドオンをダウンロードしてインストールしなければなりません。各リンクは伝播シナリオと条件によって割り当てられます。すべてのリンクのフェージング チャネル係数は、同時に生成されます。インパルス信号は、各リンクのフェージング チャネルを介して渡されます。選択したリンクの受信したインパルス応答と周波数応答はプロットされます。
サポート パッケージのインストールの確認
'WINNER II Channel Model for Communications Toolbox' サポート パッケージがインストールされているかどうか確認します。
commSupportPackageCheck("CST_WINNER2");
アンテナ アレイ インベントリ
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 のアレイ素子の数、および各リンクのパスの数を示す NumBSElements
、NumMSElements
、NumPaths
の各フィールドが返されます。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: [3.0636e+07 3.5303e+07 2.7559e+07 2.7559e+07 3.9688e+07 4.3108e+07]
ChannelFilterDelay: [7 7 7 7 7 7]
NumSamplesProcessed: 0
各リンクのインパルス信号の処理
各リンクを介してインパルス信号を渡し、MS でインパルス応答と周波数応答を観察します。これを行うには、各リンクのインパルス信号を作成し、それらを cell 配列に集約する必要があります。これは、info
メソッドで返される NumBSElements
フィールドと関数 cellfun
を使用することで実行できます。インパルス信号の cell 配列は、チャネル オブジェクトで処理されます。
txSig = cellfun(@(x) [ones(1,x);zeros(frameLen-1,x)], ... num2cell(chanInfo.NumBSElements)',UniformOutput=false); rxSig = WINNERChan(txSig); % Pass impulse signal through each link
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 = spectrumAnalyzer( ... Name="Frequency response", ... Method="welch", ... 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))); release(sa)
rng(s); % Restore RNG
その他の調査
この例は、WINNER II フェージング チャネル System object を構成して BS から MS への複数の MIMO リンクをもつシステムをモデル化する方法を示します。さらに詳しく調査する場合は、cfgLayout
と cfgWim
のフィールドを変更して、等間隔直線アレイ (ULA)、BS/MS の位置と組み合わせ、伝播シナリオと条件などの、さまざまなアンテナ アレイのモデル化を行ってください。
3 番目と 4 番目のリンクは同じ MS に接続するため、2 つのリンクでのチャネル フィルターの遅延の原因となるサンプルを適切にオフセットすることで、両方のリンクから受信した信号を結合できます。
参考文献
IST WINNER II, "WINNER II Channel Models", D1.1.2, Sep. 2007.