В этом примере показано, как настроить систему с несколькими базовыми станциями (BS), несколькими мобильными станциями (MS) и несколькими нисходящими линиями MIMO из одного сектора BS в один MS. Для запуска этого примера необходимо загрузить и установить модель канала WINNER II для связи Toolbox™ Add-On. Каждому каналу присваивается сценарий распространения и условие. Коэффициенты канала замирания для всех линий связи генерируются одновременно. Импульсный сигнал проходит через канал замирания для каждой линии связи. Полученные импульсные и частотные характеристики строятся для выбранных линий связи.
Проверьте, установлен ли пакет поддержки 'WINNER II Channel Model for Communications Toolbox'.
commSupportPackageCheck('CST_WINNER2');В модели канала WINNER II каждая БС состоит из одного или более секторов, и каждому сектору БС и МС назначается антенная решетка. Сначала необходимо создать набор массивов, доступных для использования секторами BS и MS, которые мы называем инвентаризацией антенной решетки.
В этом примере все доступные антенные решетки представляют собой однородную кольцевую решетку (UCA). В запасе имеется четыре различных 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-элементным УЦА. Вторая БС также имеет один сектор, который оснащен 12-элементным УЦА. Третья БС имеет три сектора, которые оснащены 8-элементным УЦА каждый. Каждой 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);В системе смоделировано шесть линий связи. Первая BS соединяется с первой и второй MS. Вторая BS подключается к третьей MS Для третьей BS, его первый сектор соединяется с третьей и четвертой МС, его второй сектор подключается к пятой MS, а его третий сектор не подключается к какой-либо MS с точки зрения MS, каждая из них подключается к одной BS, за исключением третьей, которая подключается как ко второй, так и к третьей BS. Каждому звену назначается один сценарий распространения, выбранный из B4 (вне помещения), C2 (городская макроячейка) и C4 (городская макроячейка вне помещения). Non-line-of-sight (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
Три БС равномерно разнесены между 0 и 300 на оси X и имеют одинаковое положение на оси Y. Позиции MS назначаются для обеспечения того, что их расстояния до подключенных BS находятся в допустимых диапазонах потерь тракта для соответствующих сценариев. В частности, диапазоны для сценариев B4, C2 и C4 составляют [3, 1000], [50, 5000] и [50, 5000] метров соответственно. По умолчанию высота каждого сектора BS составляет 32 метра, а высота MS - 1,5 метра. Каждую МС случайным образом распределяют со скоростью, которая не превышает 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');

Существует несколько параметров модели, которые могут быть скорректированы в структуре, созданной 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. После создания объекта можно вызвать его info для просмотра некоторых производных системных параметров. Например, в info возврат метода, NumBSElements, NumMSElements и NumPaths поля указывают количество элементов массива в секторах BS, количество элементов массива в MS и количество трактов для каждой линии связи. 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');

Поскольку третья и четвертая линии соединяются с одной и той же 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)));

rng(s); % Restore RNGВ примере показано, как сконфигурировать объект WINNER II fading channel System для моделирования системы с несколькими линиями MIMO от BS к MS. Дальнейшая разведка включает в себя модификации месторождений cfgLayout и cfgWim для моделирования различных антенных решеток, таких как однородные линейные решетки (ULA), местоположения и пары BS/MS, сценарии и условия распространения и т.д.
Поскольку третья и четвертая линии соединяются с одной и той же МС, можно комбинировать принятые сигналы от обеих линий, смещая выборки соответствующим образом для учета задержек канального фильтра на двух линиях.
IST WINNER II, «WINNER II Channel Models», D1.1.2, сентябрь 2007 года.