Main Content

conformalArray

Create conformal antenna array

Description

The conformalArray object creates a conformal antenna array of the specified antenna or array catalog elements. You can also specify an array of any arbitrary geometry, such as a circular array, a nonplanar array, an array with nonuniform geometry, or a conformal array of arrays.

Conformal arrays are used in:

  • Direction-finding systems that use circular arrays or stacked circular arrays.

  • Aircraft systems due to surface irregularities or mechanical stress.

Creation

Description

c = conformalArray creates a conformal antenna array using the default antenna elements and element positions. The default elements are a center-fed dipole object resonating around 700 MHz and a center-fed bowtieTriangular object resonating around 403 MHz when isolated. The antennas are spaced 0.15m apart from each other along the positive z-axis.

example

c = conformalArray(Name=Value) sets properties using one or more name-value arguments. Name is the property name and Value is the corresponding value. You can specify several name-value arguments in any order as Name1=Value1,...,NameN=ValueN. Properties that you do not specify, retain default values.

For example, c = conformalArray(Element={dipole monopole},ElementPosition=[0,0,0.1; 0,0,0.2]) creates a conformal array of a dipole and a monopole antenna whose feeds are at a distance of 0.1 m and 0.2 m from the origin along the positive z-axis.

example

Properties

expand all

Individual antenna or array elements or backing structure without exciter (cavity or reflector), specified as a 1-by-M cell array. M is the number of elements in the array. By default, a conformal array has two elements, a dipole and a bowtie antenna. The Element can be one of these options:

You can add balanced and unbalanced antennas to the same conformal array.

A conformal array cannot have only backing structure as the element. Specify at least one antenna or array element in addition to the backing structure.

Note

Conformal arrays created using unbalanced antennas with infinite ground plane are currently not supported.

Also, following antennas are unsupported as an element:

Example: conformalArray(Element={monopole monopole}) creates a conformal array consisting of two monopole antenna elements.

Example: conformalArray(Element={linearArray rectangularArray}) creates a conformal array consisting of a linear array and a rectangular array.

Example: ca =conformalArray;ca.Element={cavity(Exciter=[]) ca.Element{2}}; creates a conformal array of a cavity backing structure and a bowtie antenna element.

Data Types: cell

Position of the feed or origin for each antenna element, specified as an M-by-3 real matrix. M is the number of elements in the array. By default, there are two element positions as there are two elements in the conformal array.

Example: [0.1 0.1 0.1; -0.1 -0.1 -0.1; 0.2 0.2]

Data Types: double

Position reference for the antenna element, specified as either "origin" or "feed". For more information, see Position Reference.

Example: "origin"

Data Types: string

Excitation amplitude of the antenna elements, specified as a scalar or a positive vector. To model dead elements, set the property value to 0.

Example: 3

Example: [3 0] creates a two-element conformal array with the excitation amplitudes of the two elements equal to 3 and 0 respectively.

Data Types: double

Phase shift for antenna elements, specified as a scalar or a real vector in degrees.

Example: [-45 -45 45 45]

Data Types: double

Tilt angle of the array in degrees, specified as a scalar or vector. For more information, see Rotate Antennas and Arrays.

Example: 90

Example: Tilt=[90 90],TiltAxis=[0 1 0;0 1 1] tilts the array at 90 degrees about the two axes, defined by the vectors.

Data Types: double

Tilt axis of the array, specified as one of these values:

  • Three-element vectors of Cartesian coordinates in meters. In this case, each vector starts at the origin and lies along the specified points on the x-, y-, and z-axes.

  • Two points in space, specified as a 2-by-3 matrix corresponding to two three-element vectors of Cartesian coordinates. In this case, the array rotates around the line joining the two points.

  • "x", "y", or "z" to describe a rotation about the x-, y-, or z-axis, respectively.

For more information, see Rotate Antennas and Arrays.

Example: [0 1 0]

Example: [0 0 0;0 1 0]

Example: "Z"

Data Types: double | string

Object Functions

arrayFactorArray factor in dB
axialRatioCalculate and plot axial ratio of antenna or array
beamwidthBeamwidth of antenna
chargeCharge distribution on antenna or array surface
correlationCorrelation coefficient between two antennas in array
currentCurrent distribution on antenna or array surface
designDesign prototype antenna or arrays for resonance around specified frequency or create AI-based antenna from antenna catalog objects
doaDirection of arrival of signal
efficiencyCalculate and plot radiation efficiency of antenna or array
EHfieldsElectric and magnetic fields of antennas or embedded electric and magnetic fields of antenna element in arrays
feedCurrentCalculate current at feed for antenna or array
impedanceCalculate and plot input impedance of antenna or scan impedance of array
infoDisplay information about antenna, array, or platform
layoutDisplay array or PCB stack layout
memoryEstimateEstimate memory required to solve antenna or array mesh
meshMesh properties of metal, dielectric antenna, or array structure
meshconfigChange meshing mode of antenna, array, custom antenna, custom array, or custom geometry
msiwriteWrite antenna or array analysis data to MSI planet file
optimizeOptimize antenna or array using SADEA optimizer
patternPlot radiation pattern and phase of antenna or array or embedded pattern of antenna element in array
patternAzimuthAzimuth plane radiation pattern of antenna or array
patternElevationElevation plane radiation pattern of antenna or array
patternMultiplyRadiation pattern of array using pattern multiplication
peakRadiationCalculate and mark maximum radiation points of antenna or array on radiation pattern
phaseShiftCalculate phase shift values for arrays or multi-feed PCB stack
rcsCalculate and plot monostatic and bistatic radar cross section (RCS) of platform, antenna, or array
returnLossCalculate and plot return loss of antenna or scan return loss of array
showDisplay antenna, array structures, shapes, or platform
sparametersCalculate S-parameters for antenna or array
stlwriteWrite mesh information to STL file
vswrCalculate and plot voltage standing wave ratio (VSWR) of antenna or array element

Examples

collapse all

Create a default conformal array.

c = conformalArray
c = 
  conformalArray with properties:

            Element: {[1x1 dipole]  [1x1 bowtieTriangular]}
    ElementPosition: [2x3 double]
          Reference: 'feed'
     AmplitudeTaper: 1
         PhaseShift: 0
               Tilt: 0
           TiltAxis: [1 0 0]

show(c)

Figure contains an axes object. The axes object with title conformalArray of antennas, xlabel x (mm), ylabel y (mm) contains 6 objects of type patch, surface. These objects represent PEC, feed.

This example shows how to create a conformal array consisting of bowtieRounded, bowtieTriangular, dipoleBlade, and loopCircular antennas operating at 1 GHz. The same workflow using Antenna Array Designer app is also shown in a complementary video.

Video Walkthrough

For a walkthrough of the example, play the video.

conformal-array-thumbnail.png

Design and Analysis Workflow

Define the analysis frequency range.

f = 900e6:10e6:1.1e9;

Design and orient the rounded bowtie, triangular bowtie, blade dipole, and circular loop antennas.

% Rounded bowtie antenna 
br = design(bowtieRounded,f(11));
br.Tilt = 90;
br.TiltAxis = [0 1 0];

% Triangular bowtie antenna
bt = design(bowtieTriangular,f(11));
bt.Tilt = 90;
bt.TiltAxis = [0 1 0];

% Blade dipole antenna 
db = design(dipoleBlade,f(11));
db.Tilt = 90;
db.TiltAxis = [0 1 0];

% Circular loop antenna
lc = design(loopCircular,f(11));

Create a conformal array.

c = conformalArray(Element={br bt db lc},...
    ElementPosition=[0.2189 0.2318 0; 0 0 0.2; -0.1 0.4 0; 0.4 0.6 0],Reference="origin")
c = 
  conformalArray with properties:

            Element: {[1x1 bowtieRounded]  [1x1 bowtieTriangular]  [1x1 dipoleBlade]  [1x1 loopCircular]}
    ElementPosition: [4x3 double]
          Reference: "origin"
     AmplitudeTaper: 1
         PhaseShift: 0
               Tilt: 0
           TiltAxis: [1 0 0]

Visualize the conformal array.

show(c)

Figure contains an axes object. The axes object with title conformalArray of antennas, xlabel x (mm), ylabel y (mm) contains 12 objects of type patch, surface. These objects represent PEC, feed.

Plot the S-parameters of this array in the 900 MHz to 1.1 GHz range.

s = sparameters(c,f);
figure
rfplot(s,{[1,1];[2,2];[3,3];[4,4]});

Figure contains an axes object. The axes object with xlabel Frequency (GHz), ylabel Magnitude (dB) contains 4 objects of type line. These objects represent dB(S_{11}), dB(S_{22}), dB(S_{33}), dB(S_{44}).

Plot the radiation pattern of this array at 1 GHz.

pattern(c,f(11))

Figure contains 2 axes objects and other objects of type uicontrol. Axes object 1 contains 12 objects of type patch, surface. Hidden axes object 2 contains 20 objects of type surface, line, text, patch.

Define the radius and the number of elements for the array.

r = 2;
N = 12;

Create an array of 12 dipoles.

elem = repmat(dipole(Length=1.5),1,N);

Define the x,y,z values for the element positions in the array.

del_th = 360/N;
th = del_th:del_th:360;
x = r.*cosd(th);
y = r.*sind(th);
z = ones(1,N);
pos = [x;y;z];

Create a circular array using the defined dipoles and then visualize it. Display the layout of the array.

c = conformalArray(Element=elem,ElementPosition=pos');
show(c)

Figure contains an axes object. The axes object with title conformalArray of dipole antennas, xlabel x (m), ylabel y (m) contains 36 objects of type patch, surface. These objects represent PEC, feed.

figure
layout(c)

Figure contains an axes object. The axes object with title Array Layout, xlabel x (m), ylabel y (m) contains 13 objects of type scatter, text.

Change the width of the fourth and the twelfth element of the circular array. Visualize the new arrangement.

c.Element(4).Width = 0.05;
c.Element(12).Width = 0.2;
figure
show(c)

Figure contains an axes object. The axes object with title conformalArray of dipole antennas, xlabel x (m), ylabel y (m) contains 36 objects of type patch, surface. These objects represent PEC, feed.

Calculate and plot the impedance of the circular array at 100 MHz. The plot shows the impedance of the first element in the array.

figure
impedance(c,100e6)

Figure contains an axes object and other objects of type uicontrol. The axes object with title Active Impedance, xlabel Frequency (MHz), ylabel Impedance (ohms) contains 2 objects of type line. These objects represent Resistance Element 1, Reactance Element 1.

To view the impedance of all the elements in the array change the value from 1 to 1:12 as shown in the figure.

Define three circular loop antennas of radii 0.6366 m (default), 0.85 m, and 1 m, respectively.

l1 = loopCircular;
l2 = loopCircular(Radius=0.85);
l3 = loopCircular(Radius=1);

Create a concentric array that uses the origin of circular loop antennas as its position reference.

c = conformalArray(Element={l1 l2 l3},ElementPosition=[0 0 0; 0 0 0;...
     0 0 0],Reference="origin");
show(c)

Figure contains an axes object. The axes object with title conformalArray of antennas, xlabel x (m), ylabel y (m) contains 9 objects of type patch, surface. These objects represent PEC, feed.

Visualize the radiation pattern of the array at 80 MHz.

pattern(c,80e6)

Figure contains 2 axes objects and other objects of type uicontrol. Axes object 1 contains 9 objects of type patch, surface. Hidden axes object 2 contains 19 objects of type surface, line, text, patch.

Create a dipole antenna to use in the reflector and the conformal array.

d = dipole(Length=0.13,Width=5e-3,Tilt=90,TiltAxis='Y');

Create an infinite groundplane reflector antenna using the dipole as exciter.

rf = reflector(Exciter=d,Spacing=0.15/2,GroundPlaneLength=inf);

Create a conformal array using 36 dipole antennas and one infinite groundplane reflector antenna. View the array.

x = linspace(-0.4,0.4,6);
y = linspace(-0.4,0.4,6);
[X,Y] = meshgrid(x,y);
pos = [X(:) Y(:) 0.15*ones(numel(X),1)];
for i = 1:36
    element{i} = d;
end
element{37} = rf;
lwa = conformalArray(Element=element,ElementPosition=[pos; 0 0 0.15/2]);
show(lwa)

Figure contains an axes object. The axes object with title conformalArray of antennas over infinite ground plane, xlabel x (mm), ylabel y (mm) contains 112 objects of type patch, surface. These objects represent PEC, feed, infinite ground.

Drive only the reflector antenna with an amplitude of 1.

V = zeros(1,37);
V(end) = 1;
lwa.AmplitudeTaper = V;

Compute the radiation pattern of the conformal array.

figure
pattern(lwa,1e9,Type='efield')

Figure contains 2 axes objects and other objects of type uicontrol. Axes object 1 contains 112 objects of type patch, surface. This object represents infinite ground. Hidden axes object 2 contains 53 objects of type surface, line, text, patch. This object represents infinite ground.

Create two patch microstrip antennas using dielectric substrate FR4. Tilt the second patch microstrip antenna by 180 degrees.

p1 = patchMicrostrip(Substrate=dielectric('FR4'));
p2 = patchMicrostrip(Substrate=dielectric('FR4'),Tilt=180);

Create and view a conformal array using the two patch microstrip antennas placed 11 cm apart.

c = conformalArray(ElementPosition=[0 0 0; 0 0 0.1100],Element={p1 p2});
show(c)

Figure contains an axes object. The axes object with title conformalArray of antennas, xlabel x (mm), ylabel y (mm) contains 12 objects of type patch, surface. These objects represent PEC, feed, FR4.

Create a conformal array using dipole and monopole antennas and display it.

c = conformalArray(Element={dipole monopole},...
    ElementPosition=[0 0 0; 1.5 0 0]);
show(c)

Figure contains an axes object. The axes object with title conformalArray of antennas, xlabel x (m), ylabel y (m) contains 7 objects of type patch, surface. These objects represent PEC, feed.

Plot the radiation pattern of the array at 70 MHz.

pattern(c,70e6)

Figure contains 2 axes objects and other objects of type uicontrol. Axes object 1 contains 7 objects of type patch, surface. Hidden axes object 2 contains 18 objects of type surface, line, text, patch.

Create a subarray of linear arrays at different locations.

la = linearArray(ElementSpacing=1)
la = 
  linearArray with properties:

           Element: [1x1 dipole]
       NumElements: 2
    ElementSpacing: 1
    AmplitudeTaper: 1
        PhaseShift: 0
              Tilt: 0
          TiltAxis: [1 0 0]

subArr = conformalArray(Element=[la la],ElementPosition=[1 0 0; -1 1 0])
subArr = 
  conformalArray with properties:

            Element: [1x2 linearArray]
    ElementPosition: [2x3 double]
          Reference: 'feed'
     AmplitudeTaper: 1
         PhaseShift: 0
               Tilt: 0
           TiltAxis: [1 0 0]

show(subArr)

Figure contains an axes object. The axes object with title conformalArray of linearArray antennas, xlabel x (m), ylabel y (m) contains 12 objects of type patch, surface. These objects represent PEC, feed.

Create a linear array of dipoles with and element spacing of 1m.

la = linearArray(ElementSpacing=1);

Create a rectangular array of microstrip patch antennas.

ra = rectangularArray(Element=patchMicrostrip,RowSpacing=0.1,ColumnSpacing=0.1);

Create a subarray containing the above linear and rectangular arrays with changes in amplitude taper and phase shift values.

subArr = conformalArray(Element={la ra dipole},ElementPosition=[0 0 1.5; 0 0 0; 1 1 1],...
    AmplitudeTaper=[3 0.3 0.03],PhaseShift=[90 180 120]);
show(subArr)

Figure contains an axes object. The axes object with title conformalArray of antennas, xlabel x (m), ylabel y (m) contains 27 objects of type patch, surface. These objects represent PEC, feed.

This example shows how to create a circular cavity structure as an element in a conformalArray and plot its surface current distribution.

Create Circular Cavity Antenna

Create a circular cavity antenna operating at 1 GHz using the design function and the cavityCircular element from the antenna catalog. Display the antenna.

f = 1e9;
lambda = 3e8/f;
ant = design(cavityCircular,f);
figure
show(ant)

Figure contains an axes object. The axes object with title cavityCircular antenna element, xlabel x (mm), ylabel y (mm) contains 5 objects of type patch, surface. These objects represent PEC, feed.

Derive Backing Structure

Derive the circular cavity backing structure from the cavity antenna by specifying the 'Exciter' property as an empty array. Display the backing structure.

ant.Exciter = [];
figure
show(ant)

Figure contains an axes object. The axes object with title cavityCircular antenna element, xlabel x (mm), ylabel y (mm) contains 2 objects of type patch. This object represents PEC.

Create Conformal Array

Create and display a conformal array with circular cavity as one of its elements.

ca = conformalArray;
ca.Reference = "origin";
ca.ElementPosition = [0 0 0; 0 0 0.25; 0 0 0.5];
ca.Element = {ca.Element{1} ant ca.Element{2}};
figure
show(ca)

Figure contains an axes object. The axes object with title conformalArray of antennas, xlabel x (mm), ylabel y (mm) contains 8 objects of type patch, surface. These objects represent PEC, feed.

Plot Surface Current Distribution

Calculate the current at the feed location and plot the surface current distribution of the conformal array at 1 GHz.

If = feedCurrent(ca,f)
If = 1×2 complex

   0.0023 - 0.0005i   0.0029 + 0.0007i

figure
current(ca,f,Scale="log10")

Figure contains an axes object. The axes object with title Current distribution (log10), xlabel x (m), ylabel y (m) contains 7 objects of type patch.

More About

expand all

References

[1] Balanis, Constantine A. Antenna Theory: Analysis and Design. 3rd Ed. New York: John Wiley and Sons, 2005.

Version History

Introduced in R2016a