Main Content


Single feed or multi-feed PCB antenna


The pcbStack object is a single feed or multi-feed printed circuit board (PCB) antenna. Use the pcbStack object:

  • To create single-layer, multilayer metal, or metal-dielectric substrate antennas.

  • To create an arbitrary number of feeds and vias in an antenna.

  • To create a PCB antenna from antenna and array catalog elements.


To generate a Gerber file, a substrate layer is required. Use the Substrate property to create this layer in the PCB antenna. For more information, see Convert Circular Microstrip Patch into PCB Antenna



pcbant = pcbStack creates an air-filled single-feed PCB with two metal layers.


pcbant = pcbStack(Name=Value) creates a PCB antenna, with additional Properties specified by one or more name-value arguments. Name is the property name and Value is the corresponding value. You can specify multiple name-value arguments in any order as Name1=Value1, ..., NameN=ValueN. Properties not specified retain their default values.

For example, pcbStack(FeedDiameter=2.000e-04) creates a PCB antenna with a feed diameter of 2.000e-04 meters.


pcbant = pcbStack(ant) converts any 2-D or 2.5-D antenna from the antenna catalog into a PCB antenna for further modeling and analysis. You can also convert antenna array objects from the antenna array catalog to a PCB antenna. For a list of supported catalog elements, see Supported Catalog Elements.


expand all

Name of PCB antenna, specified as a string.

Example: "PCBPatch"

Data Types: string

Revision details of PCB antenna design, specified as a string.

Example: "2.0"

Data Types: string

Shape of the PC board, specified as a shape object from: antenna.Rectangle, antenna.Circle, antenna.Ellipse, antenna.Polygon, or antenna.Triangle.

Example: antenna.Polygon

Thickness of the PC board, specified as a positive scalar. The value of this property is the sum of the thicknesses of all the dielectric layers that lie below the top metal layer. The object treats dielectric layers that are above the top metal layer as coating. Set this property before you set the Layers property. For more information on BoardThickness, see Board Thickness versus Dielectric Thickness in PCB.

Example: 0.02000

Data Types: double

Metal and dielectric layers, specified a cell array of metal layer shapes and dielectric. You can specify one metal shape or one dielectric per layer starting with the top layer and proceeding down.

Data Types: cell

Cartesian coordinates of feed points for the PCB antenna, specified as either N -by-3 array for a balanced feed or N-by-4 array for an unbalanced feed. You can place the feed/feeds inside the board or at the edge of the board. The arrays translate to the following:

  • N -by-3 – [x, y, Layer]

  • N-by-4 – [x, y, SigLayer, GndLayer]

    Antenna Toolbox™ uses Delta-Gap source feed model to excite the antenna structure. For more information, see Feed Model

Example: [-0.0187 0 1 2]

Data Types: double

Center pin diameter of the feed connector, specified as a positive scalar in meters.

Example: 2.000e-04

Data Types: double

Cartesian coordinates of electrical shorts, specified as a M-by-4 array. The array translates to the following:

  • M-by-4 – [x, y, SigLayer, GndLayer]

Example: [0 -0.025 1 2]

Data Types: double

Electrical shorting pin diameter between metal layers, specified as a positive scalar in meters for a single pin or a positive vector in meters for multiple pins. Number of values specified in this property must match the number of pins.

Example: 1.0e-3

Data Types: double

Excitation voltage applied at each feed point, specified as a positive scalar in volts for a single feed point or a positive 1-by-N array for N feed points. The default excitation voltage is 1V.

Example: 2

Data Types: double

Model for approximating feed and via, specified as one of the following:

  • strip – A rectangular strip approximation to the feed or via cylinder. This approximation is the simplest and results in a small mesh.

  • square – A 4-sided polyhedron approximation to the feed or via cylinder.

  • hexagon – A 6-sided polyhedron approximation to the feed or via cylinder.

  • octagon – A 8-sided polyhedron approximation to the feed or via cylinder.

Example: "octagon"

Data Types: string

Excitation phase at each feed point, specified as a real scalar in degrees for a single feed point or a real 1-by-N vector in degrees for N feed points. The default excitation phase is 0 degrees.

Example: 2

Data Types: double

Type of the metal used as a conductor, specified as a metal material object. You can choose any metal from the MetalCatalog or specify a metal of your choice. For more information, see metal. For more information on metal conductor meshing, see Meshing.

Example: metal("Copper")

Lumped elements added to the antenna feed, specified as a lumped element object handle. For more information, see lumpedElement.

Example: Load=lumpedelement, where lumpedelement is the object handle for the load created using lumpedElement object.

Example: pcbant.Load = lumpedElement(Impedance=75)

Tilt angle of the antenna 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 antenna at 90 degrees about the two axes defined by the vectors.

Data Types: double

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

  • Three-element vector of Cartesian coordinates in meters. In this case, each coordinate in the 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 antenna 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

arrayCreate array of PCB stack objects
axialRatioCalculate and/or plot axial ratio of antenna or array
bandwidthCalculate and/or plot absolute bandwidth of antenna
beamwidthBeamwidth of antenna
chargeCharge distribution on antenna or array surface
currentCurrent distribution on antenna or array surface
efficiencyRadiation efficiency of antenna
EHfieldsElectric and magnetic fields of antennas or embedded electric and magnetic fields of antenna element in arrays
gerberWriteGenerate Gerber files
impedanceInput 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
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
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
resonantFrequencyCalculate and/or plot resonant frequency of antenna
returnLossReturn loss of antenna or scan return loss of array
showDisplay antenna, array structures, shapes, or platform
sparametersCalculate S-parameters for antennas and antenna arrays
vswrVoltage standing wave ratio (VSWR) of antenna or array element


collapse all

Setup parameters.

vp = physconst("lightspeed");
f = 850e6;
lambda = vp./f;

Build a planar dipole with capacitive loading at the ends.

L = 0.15;
W = 1.5*L;
stripL = L;
gapx = 0.015;
gapy = 0.01;
r1 = antenna.Rectangle(Center=[0 0], Length=L, Width=W, Center=[lambda*0.35 0]);
r2 = antenna.Rectangle(Center=[0 0], Length=L, Width=W, Center=[-lambda*0.35 0]);
r3 = antenna.Rectangle(Length=0.5*lambda, Width=0.02*lambda, NumPoints=2);
s = r1 + r2 + r3;

Assign the radiator shape to pcbStack and make the changes to the board shape and feed diameter properties.

boardShape = antenna.Rectangle(Length=0.6, Width=0.3);
p = pcbStack;
p.BoardShape = boardShape;
p.Layers = {s};
p.FeedDiameter = 0.02*lambda/2;
p.FeedLocations = [0 0 1];

Analyze the impedance of the antenna. Effect of the end-loading should result in the series resonance to be pushed lower in the band.


Create a pcb stack antenna with 2 mm dielectric thickness at the radiator and air below it. Display the structure.

p = pcbStack;
d1 = dielectric("FR4");
d1.Thickness = 2e-3;
d2 = dielectric("Air");
d2.Thickness = 8e-3;
p.Layers = {p.Layers{1},d1,d2,p.Layers{2}};
p.FeedLocations(3:4) = [1 4];

Create a PCB stack antenna from reflector backed bowtie.

b = design(bowtieRounded,1e9);
b.Tilt = 90
b = 
  bowtieRounded with properties:

        Length: 0.0959
    FlareAngle: 90
     Conductor: [1x1 metal]
          Tilt: 90
      TiltAxis: [1 0 0]
          Load: [1x1 lumpedElement]

b.TiltAxis = [0 1 0];
r = reflector(Exciter=b);
p = pcbStack(r);

Plot the directivity pattern of the antenna at 1 GHz.


Create a coplanar inverted F antenna.

fco = invertedFcoplanar(Height=14e-3, GroundPlaneLength=100e-3,...

Use this antenna to create a pcbStack object.

p = pcbStack(fco);

Create a circular microstrip patch.

p = patchMicrostripCircular;
d = dielectric;
d.EpsilonR = 4.4;
p.Radius = 0.0256;
p.Height = 1.6e-3;
p.Substrate = d;
p.GroundPlaneLength = 3*0.0256;
p.GroundPlaneWidth = 3*0.0256;
p.FeedOffset = [0.0116 0];

Create a PCB of this patch using pcbStack.

pb = pcbStack(p);
pb.FeedDiameter = 1.27e-3;
pb.ViaLocations = [0 pb.FeedLocations(1)/1.1 1 3];
pb.ViaDiameter = pb.FeedDiameter;

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

Define the RF SMA connector and use it with the Mayhew writer service to generate Gerber files of the design.

C = SMA_Jack_Cinch;
O = PCBServices.MayhewWriter;               
O.DefaultViaDiam = pb.ViaDiameter;
O.Filename = 'Microstrip circular patch-9a';
Am = PCBWriter(pb,O,C);

Images using Mayhew Labs 3-D Viewer.

Create a coplanar inverted-F antenna.

fco = invertedFcoplanar(Height=14e-3, GroundPlaneLength=100e-3,...

Create a linear array with inverted-F antenna as its elements.

la = linearArray;
la.Element = fco;
la.NumElements = 4;

Use this antenna array to create the PCB antenna.

p = pcbStack(la);

Create a dipole antenna object and linearArray antenna array object. In the linearArray antenna object, leave the Element property set to its default value of dipole. Set the ElementSpacing property to 4."

d1 = dipole;
d2 = linearArray(ElementSpacing=4);

To set the Z-coordinate of pcbStack antenna object to zero, rotate the dipole and linear dipole array around 90 degrees using the Tilt property. Then set the TiltAxis property to [ 0 -1 0 ] for dipole and linear dipole array antennas.

d1.Tilt = 90;
d2.Element.Tilt = 90;
d1.TiltAxis = [0 -1 0];
d2.Element.TiltAxis = [0 -1 0];

Create and view PCB stack antenna created using the dipole antenna object.

p1 = pcbStack(d1);

Create and view PCB stack antenna using the linearArray antenna array object.

p2 = pcbStack(d2);

Create a circular microstrip patch antenna.

ant = design(patchMicrostripCircular,3e9);
ant.Substrate = dielectric("FR4");

c = antenna.Circle;

c.NumPoints = 6;
c.Radius = 3*ant.Radius;

Create the PCB stack using the vertices derived from the circle shape.

v = getShapeVertices(c);
cp = antenna.Polygon(Vertices=v);
pb = pcbStack(ant);
pb.Layers{3} = cp;
pb.BoardShape = cp;
axis equal

Supported Catalog Elements

The following antennas and arrays from the catalog can be converted into a PCB antenna by the pcbStack object:



Orient these antennas in the xy-plane if required, before conversion to pcbStack.

  • Dipole Antennas: dipole, bowtieTriangular, bowtieRounded, and dipoleBlade.

  • Fractal Antennas: fractalCarpet, fractalGasket, fractalIsland, fractalKoch, fractalSnowflake

  • Loop Antennas: loopCircular, loopRectangular

  • Monopole Antennas: invertedFcoplanar, invertedLcoplanar

  • Patch Antennas: patchMicrostrip, patchMicrostripCircular, patchMicrostripElliptical, patchMicrostripEnotch, patchMicrostripHnotch, patchMicrostripInsetfed, patchMicrostripTriangular

  • Reflector Antennas: reflector and reflectorCircular with a finite ground plane.

  • Slot Antennas: slot, vivaldi, vivaldiAntipodal, vivaldiOffsetCavity

  • Spiral Antennas: spiralArchimedean, spiralEquiangular, spiralRectangular

  • Other Antennas: lpda, customAntennaGeometry, customArrayGeometry



The arrays must be homogeneous, with uniform elements.

  • linearArray

  • circularArray

  • rectangularArray


[1] Balanis, C. A. Antenna Theory. Analysis and Design. 3rd Ed. Hoboken, NJ: John Wiley & Sons, 2005.

[2] Stutzman, W. L. and Gary A. Thiele. Antenna Theory and Design. 3rd Ed. River Street, NJ: John Wiley & Sons, 2013.

Version History

Introduced in R2017a