В программном обеспечении Phased Array System Toolbox™ subarray является доступным подмножеством элементов массива. Когда вы используете массив, который содержит подмассивы, можно получить доступ к измерениям от подмассивов, но не от отдельных элементов. Точно так же можно выполнить обработку на уровне подмассива, но не на уровне отдельных элементов. В результате система имеет меньше степеней свободы, чем если бы вы управляли системой на уровне отдельных элементов.
Радарные приложения часто используют подмассивы, потому что операции, такие как перемена фазы и аналого-цифровое преобразование, являются слишком дорогими, чтобы реализовать для каждого элемента. Менее дорого сгруппировать элементы массива через оборудование, таким образом создавая подмассивы в массиве. Группировка элементов через оборудование ограничивают доступ к измерениям и обработка к уровню подмассива.
Чтобы работать с подмассивами, необходимо задать массив и подмассивы в нем. Можно или задать массив сначала или начать с подмассива. Выберите один из этих подходов:
Задайте один подмассив, и затем создайте больший массив путем расположения копий подмассива. Подмассив может быть ULA, URA или конформным массивом. Копии идентичны, за исключением их местоположения и ориентации. Можно расположить копии пространственно в сетке или пользовательском макете.
Когда вы используете этот подход, вы создаете большой массив путем создания phased.ReplicatedSubarray
Система object™. Эта информация об объектно-ориентированной памяти о подмассиве и как копии его располагаются, чтобы сформировать больший массив.
Задайте массив, и затем разделите его в подмассивы. Массив может быть ULA, URA или конформным массивом. Подмассивы не должны быть идентичными. Данный элемент массива может быть больше чем в одном подмассиве, ведя к overlapped subarrays.
Когда вы используете этот подход, вы делите свой массив путем создания phased.PartitionedArray
Системный объект. Эта информация об объектно-ориентированной памяти о массиве и его структуре подмассива.
После того, как вы создаете phased.ReplicatedSubarray
или phased.PartitionedArray
объект, можно использовать его, чтобы выполнить beamforming, регулирование или другие операции. Для этого задайте свой объект как значение SensorArray
или Sensor
свойство в объектах, которые имеют такое свойство и ту поддержку подмассивы. Объекты, которые поддерживают подмассивы в их SensorArray
или Sensor
свойство включает:
phased.AngleDopplerResponse
phased.ArrayGain
phased.ArrayResponse
phased.Collector
phased.ConstantGammaClutter
phased.MVDRBeamformer
phased.PhaseShiftBeamformer
phased.Radiator
phased.STAPSMIBeamformer
phased.SteeringVector
phased.SubbandPhaseShiftBeamformer
phased.WidebandCollector
В этом примере показано, как настроить прямоугольный массив, содержащий линейные подмассивы. Пример также находит центры фазы подмассивов.
Создайте 2 3 прямоугольный массив.
array = phased.URA('Size',[2 3]);
Постройте положения элементов массива в yz-плоскости (все x-координаты являются нулем.) Включают метки, которые указывают на нумерацию элементов. Нумерация важна для выбора, какие элементы включены в каждый подмассив.
viewArray(array,'ShowIndex','All')
Создайте и просмотрите массив, состоящий из трех линейных подмассивов с 2 элементами каждая параллель к оси z. Используйте индексы из графика сформировать матрицу для SubarraySelection
свойство. getSubarrayPosition
метод возвращает центры фазы этих трех подмассивов.
subarray1 = [1 1 0 0 0 0; 0 0 1 1 0 0; 0 0 0 0 1 1]; partitionedarray1 = phased.PartitionedArray('Array',array,... 'SubarraySelection',subarray1); viewArray(partitionedarray1)
subarray1pos = getSubarrayPosition(partitionedarray1)
subarray1pos = 3×3
0 0 0
-0.5000 0 0.5000
0 0 0
Создайте и просмотрите другой массив, состоящий из двух линейных подмассивов с 3 элементами, параллельных оси Y. Используя getSubarrayPosition
метод, найдите центры фазы этих двух подмассивов.
subarray2 = [0 1 0 1 0 1; 1 0 1 0 1 0]; partitionedarray2 = phased.PartitionedArray('Array',array,... 'SubarraySelection',subarray2); viewArray(partitionedarray2)
subarraypos2 = getSubarrayPosition(partitionedarray2)
subarraypos2 = 3×2
0 0
0 0
-0.2500 0.2500
В этом примере показано, как расположить копии линейного подмассива, чтобы сформировать прямоугольный массив.
Создайте линейную матрицу с 4 элементами, параллельную оси Y.
array = phased.ULA('NumElements',4);
Создайте прямоугольный массив путем расположения двух копий линейной матрицы.
replsubarray = phased.ReplicatedSubarray('Subarray',array,'GridSize',[2 1]);
Постройте положения элементов массива (заполненные круги) и центры фазы подмассивов (незаполненные круги). Элементы лежат в yz-плоскости, потому что все x-координаты являются нулем.
viewArray(replsubarray); hold on; subarraypos = getSubarrayPosition(replsubarray); sx = subarraypos(1,:); sy = subarraypos(2,:); sz = subarraypos(3,:); scatter3(sx,sy,sz,'ro') hold off
В этом примере показано, как расположить копии линейного подмассива в треугольном размещении.
Создайте линейную матрицу с 4 элементами.
antenna = phased.CosineAntennaElement('CosinePower',1); array = phased.ULA('NumElements',4,'Element',antenna);
Создайте больший массив путем расположения трех копий линейной матрицы. Задайте центры фазы и нормальные направления трех копий явным образом.
vertex_ang = [60 180 -60]; vertex = 2*[cosd(vertex_ang); sind(vertex_ang); zeros(1,3)]; subarray_pos = 1/2*[... (vertex(:,1)+vertex(:,2)) ... (vertex(:,2)+vertex(:,3)) ... (vertex(:,3)+vertex(:,1))]; replsubarray = phased.ReplicatedSubarray('Subarray',array,... 'Layout','Custom',... 'SubarrayPosition',subarray_pos,... 'SubarrayNormal',[120 0;-120 0;0 0].');
Постройте положения (синих) элементов массива и центры фазы (красные) из подмассивов. График находится в xy-плоскости, потому что все z-координаты являются нулем.
viewArray(replsubarray,'ShowSubarray',[]) hold on scatter3(subarray_pos(1,:),subarray_pos(2,:),... subarray_pos(3,:),'ro') hold off