В программном обеспечении 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