В этом примере показано, как применить сужение и модель, утончающуюся на различных конфигурациях массивов. Это также демонстрирует, как создать массивы с различными шаблонами элемента.
Этот раздел показывает, как применить окно Тейлора на элементы универсальной линейной матрицы (ULA) для того, чтобы снизить уровни бокового лепестка.
%set the random seed rs = rng(6); % Create a ULA antenna of 10 elements. N = 20; ula = phased.ULA(N); % Clone the ideal ULA taperedULA = clone(ula); % Calculate and assign the taper nbar = 5; sll = -20; taperedULA.Taper = taylorwin(N,nbar,sll).';
Сравните ответ клиновидного к неклиновидному массиву. Заметьте, как боковые лепестки клиновидного ULA ниже.
helperCompareResponses(taperedULA,ula, ... 'Ideal ULA versus Tapered ULA response', ... {'Tapered','Not tapered'});
Этот раздел показывает, как смоделировать сужение использования утончения. При утончении каждый элемент массива имеет определенную вероятность того, чтобы быть деактивированным или удаленный. Значения заострения могут быть или 0 для неактивного элемента, или 1 для активного элемента. Здесь, вероятность хранения элемента пропорциональна значению окна Тейлора в том элементе.
% Get that previously computed taper values corresponding to a Taylor % window taper = taperedULA.Taper; % Create a random vector uniformly distributed between 0 and 1 randvect = rand(size(taper)); % Compute the taper values whose probability of being 1 is equal to % the value of the normalized Taylor window at the corresponding sensor. thinningTaper = zeros(size(taper)); thinningTaper(randvect<taper/max(taper)) = 1; % Apply thinning thinnedULA = clone(ula); thinnedULA.Taper = thinningTaper;
Следующий график показывает, как утончающиеся значения заострения распределяются. Заметьте на ребрах, когда уровень окна понижается, количество неактивных датчиков произошло.
plot(taper) hold on plot(thinningTaper,'o') hold off legend('Taylor window','Thinning taper') title('Applied Thinning Taper');xlabel('Sensor Position'); ylabel('Taylor Window Values');
Сравните ответ разбавленного к идеальному массиву. Заметьте, как боковые лепестки разбавленного ULA ниже.
helperCompareResponses(thinnedULA,ula, ... 'Ideal ULA versus Thinned ULA response', ... {'Thinned','Not thinned'});
Этот раздел показывает, как применить окно Тейлора по обоим измерениям 13 10 универсальными прямоугольными массивами (URA).
uraSize = [13,10]; heterogeneousURA = phased.URA(uraSize); nbar=2; sll = -20; % along the z axis twinz = taylorwin(uraSize(1),nbar,sll); % along the y axis twiny = taylorwin(uraSize(2),nbar,sll); % Get the total taper values by multiplying the vectors of both dimensions tap = twinz*twiny.'; % Apply the taper taperedURA = clone(heterogeneousURA); taperedURA.Taper = tap;
Просмотрите яркость цвета датчика пропорционально величинам заострения
viewArray(taperedURA,'Title','Tapered URA','ShowTaper',true);
Постройте значения заострения в каждом датчике на 3-м пробеле
clf pos = getElementPosition(taperedURA); plot3(pos(2,:),pos(3,:),taperedURA.Taper(:),'*'); title('Applied Taper');ylabel('Sensor Position');zlabel('Taper Values');
Сравните ответ клиновидного к неклиновидному массиву. Заметьте, как боковые лепестки клиновидного URA ниже.
helperCompareResponses(heterogeneousURA,taperedURA, ... 'Ideal URA versus Tapered URA response', ... {'Not tapered','Tapered'});
Этот раздел показывает, как применить заострение на круговой плоский массив с радиусом 5 метров и расстоянием между элементами 0,5 метров.
radius = 5; dist = 0.5; numElPerSide = radius*2/dist; % Get the positions of the smallest URA which could fit the circular planar % array pos = getElementPosition(phased.URA(numElPerSide,dist)); % Remove all elements in URA which are outside the circle elemToRemove = sum(pos.^2) > radius^2; pos(:,elemToRemove) = []; % Create the circular planar array circularPlanarArray = phased.ConformalArray('ElementPosition',pos,... 'ElementNormal',[0;0]*ones(1,size(pos,2)));
Примените проспект окно Тейлора
taperedCircularPlanarArray = clone(circularPlanarArray); nbar=3; sll = -25; taperedCircularPlanarArray.Taper = taylortaperc(pos,2*radius,nbar,sll).';
Просмотрите массив и постройте значения заострения в каждом датчике.
viewArray(taperedCircularPlanarArray,... 'Title','Tapered Circular Planar Array','ShowTaper',true)
clf plot3(pos(2,:),pos(3,:),taperedCircularPlanarArray.Taper,'*'); title('Applied Taper');ylabel('Sensor Position');zlabel('Taper Values');
Сравните ответ клиновидного к неклиновидному массиву. Заметьте, как боковые лепестки клиновидного массива ниже.
helperCompareResponses(circularPlanarArray,taperedCircularPlanarArray, ... 'Ideal versus Tapered response', ... {'Not tapered','Tapered'});
Вычислите утончающиеся значения заострения, похожие на раздел ULA.
taper = taperedCircularPlanarArray.Taper; randvect = rand(size(taper)); thinningTaper = zeros(size(taper)); thinningTaper(randvect<taper/max(max(taper))) = 1; thinnedCircularPlanarArray = clone(circularPlanarArray); thinnedCircularPlanarArray.Taper = thinningTaper;
Просмотрите массив и Сравните ответ разбавленного к идеальному массиву.
viewArray(thinnedCircularPlanarArray,'ShowTaper',true)
clf; helperCompareResponses(circularPlanarArray,thinnedCircularPlanarArray, ... 'Ideal versus Thinned response', ... {'Not thinned','Thinned'});
Этот раздел показывает, как создать 13 10 URA с шаблонами датчика на ребрах и углах, отличающихся, чем шаблоны остающихся датчиков. Эта способность могла использоваться к модели, связывающей эффекты.
Создайте три различных шаблона косинуса со следующим азимутом и экспонентами косинуса вертикального изменения [azim экспонента, экспонента элевации]: [2, 2] для ребер, [4, 4] для углов, и [1.5, 1.5] для основных датчиков.
mainAntenna = phased.CosineAntennaElement('CosinePower',[1.5 1.5]); edgeAntenna = phased.CosineAntennaElement('CosinePower',[2 2]); cornerAntenna = phased.CosineAntennaElement('CosinePower',[4 4]);
Сопоставьте датчики с шаблонами.
uraSize = [13,10]; % Create a cell array which includes all the patterns patterns = {mainAntenna, edgeAntenna, cornerAntenna}; % Initialize all sensors to first pattern. patternMap = ones(uraSize); % Set the edges to the second pattern. patternMap([1 end],2:end-1) = 2; patternMap(2:end-1,[1 end]) = 2; % Set the corners to the third pattern. patternMap([1 end],[1 end]) = 3; % Create the URA heterogeneousURA = phased.HeterogeneousURA('ElementSet' , patterns, ... 'ElementIndices', patternMap);
Просмотрите размещение шаблона в массиве.
helperViewPatternArray(heterogeneousURA);
Сравните ответ нескольких копируют массив к одному массиву шаблона.
clf; helperCompareResponses( heterogeneousURA, ... phased.URA(uraSize,'Element',mainAntenna), ... 'Multiple versus single pattern response', ... {'Single Pattern','Multiple Patterns'});
Этот раздел показывает, как установить шаблон расположенных больше чем 4 метров датчиков от центра массива.
% Create a cell array which includes all the patterns patterns = {mainAntenna, edgeAntenna}; % Get positions pos = getElementPosition(circularPlanarArray); % Initialize all sensors to first pattern in sensorPatterns. patternMap = ones(1,size(pos,2)); % Get the indexed of the sensors more than 4 meters away from the center. sensorIdx = find(sum(pos.^2) > 4^2); % Set the edges to the second pattern in sensorPatterns. patternMap(sensorIdx) = 2; % Set the corresponding properties heterogeneousCircularPlanarArray = ... phased.HeterogeneousConformalArray('ElementPosition',pos,... 'ElementNormal',[1;0]*ones(1,size(pos,2)),... 'ElementSet' , patterns, ... 'ElementIndices', patternMap);
Просмотрите размещение шаблона в массиве.
helperViewPatternArray(heterogeneousCircularPlanarArray);
Сравните ответ нескольких копируют массив к одному массиву шаблона.
clf; helperCompareResponses(circularPlanarArray,... heterogeneousCircularPlanarArray,... 'Multiple versus single pattern response',... {'Single Pattern','Multiple Patterns'}); % reset the random seed rng(rs)
Этот пример продемонстрировал, как применить значения заострения и утончение модели с помощью значений заострения для различных конфигураций массивов. Это также показало, как создать массивы с различными шаблонами элемента.