Conformal Array
Support for Arrays with Custom Geometry
The phased.ConformalArray
object lets you model
a phased array with arbitrary geometry. For example, you can use phased.ConformalArray
to
design:
A planar array with a nonrectangular geometry, such as a circular array
An array with nonuniform geometry, such as a linear array with variable spacing
A nonplanar array
When you use phased.ConformalArray
, you must
specify these aspects of the array:
Sensor element of the array
Element positions
Direction normal to each array element
Create Default Conformal Array
To create a conformal array with default properties, use this command:
array = phased.ConformalArray
array = phased.ConformalArray with properties: Element: [1x1 phased.IsotropicAntennaElement] ElementPosition: [3x1 double] ElementNormal: [2x1 double] Taper: 1
This default conformal array consists of a single phased.IsotropicAntennaElement
antenna located at the origin of the local coordinate system. The direction normal to the sensor element is 0° azimuth and 0° elevation.
Uniform Circular Array Created from Conformal Array
This example shows how to construct a 60-element uniform circular array. In constructing a uniform circular array, you can use either the phased.UCA
or the phased.ConformalArray
System objects. The conformal array approach is more general because it allows you to point the array elements in arbitrary directions. A UCA restricts the array element directions to lie in the plane of the array. This example illustrates how you can use the phased.ConformalArray
System object™ to create any other array shape. Assume an operating frequency of 400 MHz. Tune the array by specifying the arclength between the elements to be 0.5 where is the wavelength corresponding to the operating frequency. Array elements lie in the x-y-plane. Element normal directions are set to where is the azimuth angle of the array element.
Set the number of elements and the operating frequency of the array.
N = 60; fc = 400e6;
Compute the element spacing in radians.
theta = 360/N; thetarad = deg2rad(theta);
Choose the radius so that the inter-element arclength is one-half wavelength.
arclength = 0.5*(physconst('LightSpeed')/fc);
radius = arclength/thetarad;
Compute the element azimuth angles. Azimuth angles must lie in the range .
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)];
Show the UCA array geometry.
viewArray(array)
Plot the array response pattern at 1 GHz.
pattern(array,1e9,[-180:180],0,'PropagationSpeed',physconst('LightSpeed'),... 'CoordinateSystem','polar','Type','powerdb','Normalize',true)
Custom Antenna Array
This example shows how to construct and visualize a custom-geometry array containing antenna elements with a custom radiation pattern. The radiation pattern of each element is constant over each azimuth angle and has a cosine pattern for the elevation angles.
Define the custom antenna element and plot its radiation pattern.
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);
Define the locations and normal directions of the elements. All elements lie in the z-plane. The elements are located at (1;0;0) , (0;1;0), and (0;-1;0) meters. The element normal azimuth angles are 0°, 120°, and -120°, respectively. All normal elevation angles are 0°.
xpos = [1 0 0]; ypos = [0 1 -1]; zpos = [0 0 0]; normal_az = [0 120 -120]; normal_el = [0 0 0];
Define a conformal array with those elements.
array = phased.ConformalArray('Element',antenna,... 'ElementPosition',[xpos; ypos; zpos],... 'ElementNormal',[normal_az; normal_el]);
Plot the positions and normal directions of the elements.
viewArray(array,'ShowNormals',true)
view(0,90)
pattern(array,fc,az,el,'CoordinateSystem','polar','Type','powerdb',... 'Normalize',true,'PropagationSpeed',physconst('LightSpeed'))