phased.ConformalArray объект позволяет моделировать фазированный массив с произвольной геометрией. Например, можно использовать phased.ConformalArray для проектирования:
Плоский массив с непрямоугольной геометрией, например круговой массив
Массив с неоднородной геометрией, например линейный массив с переменным интервалом
Непланарный массив
При использовании phased.ConformalArray, необходимо указать следующие аспекты массива:
Сенсорный элемент матрицы
Позиции элементов
Направление по нормали к каждому элементу массива
Чтобы создать конформный массив со свойствами по умолчанию, используйте следующую команду:
array = phased.ConformalArray
array =
phased.ConformalArray with properties:
Element: [1x1 phased.IsotropicAntennaElement]
ElementPosition: [3x1 double]
ElementNormal: [2x1 double]
Taper: 1
Этот конформный массив по умолчанию состоит из одного phased.IsotropicAntennaElement антенна, расположенная в начале локальной системы координат. Направление по нормали к элементу датчика - азимут 0 ° и отметка 0 °.
В этом примере показано, как создать 60-элементный однородный круглый массив. При построении однородного кругового массива можно использовать либо phased.UCA или phased.ConformalArray Системные объекты. Конформный подход к массиву является более общим, поскольку позволяет указывать элементы массива в произвольных направлениях. UCA ограничивает направления элементов массива, чтобы они лежали в плоскости массива. В этом примере показано, как можно использовать phased.ConformalArray Системный объект для создания любой другой фигуры массива. Допустим, рабочая частота 400 МГц. Настройте массив, задав длину дуги между элементами , где - длина волны, соответствующая рабочей частоте. Элементы массива лежат в плоскости x-y. Нормальные направления элемента задаются равными /, где/n - азимутальный угол n-го элемента массива.
Задайте количество элементов и рабочую частоту массива.
N = 60; fc = 400e6;
Вычислите расстояние между элементами в радианах.
theta = 360/N; thetarad = deg2rad(theta);
Выберите радиус таким образом, чтобы длина межэлементной дуги составляла половину длины волны.
arclength = 0.5*(physconst('LightSpeed')/fc);
radius = arclength/thetarad;Вычислите азимутальные углы элемента. Азимутальные углы должны находиться в диапазоне ).
ang = (0:N-1)*theta; ang(ang >= 180.0) = ang(ang >= 180.0) - 360.0; array = phased.ConformalArray; array.ElementPosition = [radius*cosd(ang);... radius*sind(ang);... zeros(1,N)]; array.ElementNormal = [ang;zeros(1,N)];
Отображение геометрии массива UCA.
viewArray(array)

Постройте график массива с частотой 1 ГГц.
pattern(array,1e9,[-180:180],0,'PropagationSpeed',physconst('LightSpeed'),... 'CoordinateSystem','polar','Type','powerdb','Normalize',true)

В этом примере показано, как построить и визуализировать массив пользовательской геометрии, содержащий антенные элементы с пользовательской диаграммой направленности. Диаграмма направленности каждого элемента является постоянной по каждому азимутальному углу и имеет косинусную диаграмму для углов возвышения.
Определите пользовательский антенный элемент и постройте его диаграмму направленности.
az = -180:180; el = -90:90; fc = 3e8; elresp = cosd(el); antenna = phased.CustomAntennaElement('AzimuthAngles',az,... 'ElevationAngles',el,... 'MagnitudePattern',repmat(elresp',1,numel(az))); pattern(antenna,3e8,0,el,'CoordinateSystem','polar','Type','powerdb',... 'Normalize',true);

Определите расположения и направления нормали элементов. Все элементы лежат в плоскости Z. Элементы расположены на (1; 0; 0), (0; 1; 0) и (0; -1; 0) метрах. Нормальные азимутальные углы элемента равны 0 °, 120 ° и -120 ° соответственно. Все нормальные углы возвышения равны 0 °.
xpos = [1 0 0]; ypos = [0 1 -1]; zpos = [0 0 0]; normal_az = [0 120 -120]; normal_el = [0 0 0];
Определите конформный массив с этими элементами.
array = phased.ConformalArray('Element',antenna,... 'ElementPosition',[xpos; ypos; zpos],... 'ElementNormal',[normal_az; normal_el]);
Постройте график положений и направлений нормали элементов.
viewArray(array,'ShowNormals',true)
view(0,90)
pattern(array,fc,az,el,'CoordinateSystem','polar','Type','powerdb',... 'Normalize',true,'PropagationSpeed',physconst('LightSpeed'))
