Этот пример показывает, как настроить систему с несколькими базовыми станциями (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');
Существует несколько параметров модели, которые могут быть скорректированы в структуре, созданной 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 и количество путей для каждой ссылки. 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');
Поскольку третьи и четвертые ссылки соединяются с одной и той же 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 канал с замираниями Системного объекта для моделирования системы с несколькими ссылок MIMO от BS к MS. Дальнейшая разведка включает модификации полей cfgLayout
и cfgWim
моделировать различные антенные решетки, такие как равномерные линейные массивы (ULA), местоположения и пары BS/MS, сценарии и условия распространения и так далее.
Поскольку третья и четвертая ссылки соединяются с одной и той же МС, можно объединить принятые сигналы от обеих ссылок путем смещения выборок соответствующим образом для учета задержек фильтра канала на двух ссылках.
IST WINNER II, «WINNER II Channel Models», D1.1.2, Sep. 2007.