Одновременная симуляция нескольких каналов с замираниями с моделью WINNER II Channel

Этот пример показывает, как настроить систему с несколькими базовыми станциями (BS), несколькими мобильными станциями (MS) и несколькими нисходящими линиями связи MIMO от одного сектора BS до одного MS. Вы должны загрузить и установить модель WINNER II Channel для Communications Toolbox™ Add-On, чтобы запустить этот пример. Каждой ссылке присваиваются сценарий распространения и условие. Коэффициенты замирания канала для всех ссылок генерируются одновременно. Импульсный сигнал передается через канал с замираниями для каждой ссылки. Полученные импульс и частотные характеристики построены для выбранных ссылок.

Проверка на установку пакета поддержки

Проверьте, установлен ли пакет поддержки 'WINNER II Channel Model for Communications Toolbox'.

commSupportPackageCheck('CST_WINNER2');

Инвентаризация антенных решеток

В модели WINNER II канала каждая BS состоит из одного или нескольких секторов, и каждому сектору BS и MS назначается антенная решетка. Нам нужно сначала установить набор массивов, которые доступны для секторов BS и MS, чтобы использовать, который мы называем инвентаризацией антенной решетки.

В этом примере все доступные антенные решетки являются равномерным круговым массивом (UCA). В запасе имеется четыре различных УЦА:

  • 16 элементов радиусом 30 см

  • 12 элементов радиусом 30 см

  • 8 элементов радиусом 30 см

  • 4 элемента радиусом 5 см

Каждый антенный элемент в 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 на 300 (метров) мы установим 3 BS, 5 MS и 6 ссылки. Первая БС имеет один сектор, который оборудован УЦА с 16 элементами. Вторая BS также имеет один сектор, который оборудован UCA с 12 элементами. Третья БС имеет три сектора, которые оснащены 8-элементной УЦА каждый. Каждой MS присваивается UCA с 4 элементами.

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);

Шесть ссылок моделируются в системе. Первая BS соединяется с первой и второй MS. Вторая BS соединяется с третьей MS. Для третьей BS, его первый сектор соединяется с третьей и четвертой МС, его второй сектор соединяется с пятой МС, а третий сектор не соединяется с какой-либо МС С точки зрения МС, каждая из них соединяется с одной БС, кроме третьей, которая соединяется как со второй, так и с третьей БС. Каждой ссылке назначается один сценарий распространения, выбранный из B4 (наружный и внутренний), C2 (Urban macro-cell) и C4 (Urban macro outdoor и внутренний). Для каждой линии моделируется не ссылка видимость (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

Три BS равномерно расположены между 0 и 300 по оси X и имеют одинаковое положение по оси Y. Позиции MS назначаются, чтобы убедиться, что их расстояния до подключенных BS находятся в допустимых областях значений потерь пути для соответствующих сценариев. В частности, области значений для сценариев B4, C2 и C4 составляют [3, 1000], [50, 5000] и [50, 5000] метров соответственно. По умолчанию каждый сектор BS имеет высоту 32 метра, а MS - 1,5 метра. Каждая MS случайным образом назначается со скоростью, которая не превышает 0,5 м/с ни в одном из направлений 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-D. На графике каждый сектор BS представлен кругом, каждый MS представлен крестом, и каждая ссылка представлена прямой линией между соответствующими BS и MS. Поскольку третья BS имеет три сектора, на карте показаны только три круга.

% 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');

Figure contains an axes. The axes contains 8 objects of type line. These objects represent BS, MS.

Сконфигурируйте параметры модели

Существует несколько параметров модели, которые могут быть скорректированы в структуре, созданной winner2.wimparset функция. В этом примере центральная частота составляет 5,25 ГГц. Потери пути и затенение затенения моделируются для каждой ссылки. Чтобы поддерживать пропускную способность до 100 МГц, два самых сильных кластера каждой ссылки разделены на 3 подкластера, каждый из которых разделен на 5 нс. Все ссылки дискретизируются с различными скоростями, которые зависят от скорости МС. Поскольку третья и четвертая ссылки соединяются с одной и той же 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 Channel Object™

Теперь мы можем использовать модель и размещение строений, чтобы создать Системный объект WINNER II канала. Как только объект создан, можно вызвать его info метод для просмотра некоторых производных системных параметров. Для примера, в info возврат метода, NumBSElements, NumMSElements и NumPaths поля указывают количество элементов массива в секторах BS, количество элементов массива в MS и количество путей для каждой ссылки. The 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: [7 7 7 7 7 7]
    NumSamplesProcessed: 0

Сигнал импульса процесса для каждой ссылки

Мы проходим импульсный сигнал через каждую ссылку и наблюдаем импульсную и частотные характеристики в MS. Для этого нам нужно создать импульсный сигнал для каждой ссылки и агрегировать их в массив ячеек. Это достигается при помощи NumBSElements поле info возврат метода и cellfun функция. Массив ячеек импульсного сигнала должен обрабатываться объектом канала.

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 дает представление о том, как импульс и частотные характеристики затухающего канала выглядят для каждой ссылки. Из 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');

Figure contains an axes. The axes with title Impulse Response at First Receive Antenna contains 6 objects of type stem. These objects represent Link 1, Link 2, Link 3, Link 4, Link 5, Link 6.

Поскольку третьи и четвертые ссылки соединяются с одной и той же MS и, следовательно, имеют одинаковую частоту дискретизации, мы строим их вместе с помощью объекта Spectrum Analyzer System. Эти два канала имеют 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)));

Figure Frequency response contains an axes and other objects of type uiflowcontainer, uimenu, uitoolbar. The axes with title Frequency Response contains 2 objects of type line. These objects represent Link 3, Link 4.

rng(s); % Restore RNG

Дальнейшие исследования

Пример показов, как сконфигурировать WINNER II канал с замираниями Системного объекта для моделирования системы с несколькими ссылок MIMO от BS к MS. Дальнейшая разведка включает модификации полей cfgLayout и cfgWim моделировать различные антенные решетки, такие как равномерные линейные массивы (ULA), местоположения и пары BS/MS, сценарии и условия распространения и так далее.

Поскольку третья и четвертая ссылки соединяются с одной и той же МС, можно объединить принятые сигналы от обеих ссылок путем смещения выборок соответствующим образом для учета задержек фильтра канала на двух ссылках.

Избранная библиография

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