Подмассивы в массивах

Определение подмассивов

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

Похожие темы