Main Content


Create custom antenna from geometric shapes

Since R2023b


    The customAntenna object lets you create an antenna from a custom shape. You can use the basic 2-D and 3-D shapes from the catalog and perform geometric operations on them to create a custom shape. You can also use the triangulation or shape vertices to create custom shapes. You assign a feed to a location on the shape to convert it into an antenna. Perform port, surface, and field analysis on this antenna. You can use this antenna as an exciter for the cavity and reflector type backing structures, element in the arrays, element for the installed antenna analysis, or element in the plane wave excitation environment.




    c = customAntenna

    creates a custom antenna object.


    c = customAntenna(Name=Value) sets additional 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 not specified retain their default values.


    expand all

    Antenna shape, specified as a shape object from these:

    Example: shape.Circle

    Example: shape.Sphere

    Location of the antenna feed created using the createFeed function, returned as either a two-element real vector for 2-D shapes or a three-element real vector for 3-D shapes. Feed location follows the Cartesian coordinate system.

    Example: [1.2 0.25]

    Example: [-0.0908 -0.1250 0.9755]

    Data Types: double

    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

    Lumped elements added to the antenna feed, specified as a lumpedElement object. You can add a load anywhere on the surface of the antenna. By default, the load is at the feed. For more information, see lumpedElement.

    Example: lumpedElement(Impedance=75)

    Object Functions

    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
    createFeedCreate feed location for custom antenna
    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
    impedanceInput impedance of antenna or scan impedance of array
    infoDisplay information about antenna, array, or platform
    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
    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
    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

    This example shows how to build a horn antenna using 2D and 3D shapes from the shapes catalog and customAntenna object. Follow a two step approach to create a horn antenna. Divide a horn antenna into two parts - a waveguide and a horn taper. Join them to create the horn shape. Then use this shape to create the horn antenna. Add feed to this antenna and plot its directivity pattern.

    Define Dimensions of Horn

    Define the dimensions of the horn and feed region in meters.

    length = 0.0095;
    width = 0.019;
    height = 0.05;
    feedHeight = 0.0048;
    feedWidth = 1e-4;
    feedOffset = [-0.0155 0];
    flarelength = 0.102;

    Create Waveguide

    Use shape.Box object to create a box.

    wShape = shape.Box(Length=length, Width=width,...

    Remove one face of the box to create a hollow box. Orient the shape appropriately.


    rotate(wShape,90,[0 0 0],[0 1 0]);

    translate(wShape,[0 0 length/2]);

    Create Horn Taper

    Create a horn taper by linearly extruding and orienting a rectangular shape.

    rect = shape.Rectangle(Length=length, Width=width);

    hornTaper = extrudeLinear(rect,flarelength, Scale=...
    [3.5579 3], NumSegments=1);

    rotate(hornTaper,90,[0 0 0],[0 1 0]);

    translate(hornTaper,[height/2 0 length/2]);

    Create Horn Shape and Rectangular Feed Probe

    Join the waveguide and horn taper shapes to form the horn shape.

    hornShape = add(wShape,hornTaper, RetainShape=1);

    Create a rectangular feed probe and orient it.

    feedProbe = shape.Rectangle(Length=feedHeight, Width=feedWidth);
    rotate(feedProbe,90,[0 0 0],[0 1 0]);

    translate(feedProbe,[feedOffset(1) feedOffset(2) feedHeight/2]);

    Create Horn Antenna and Plot Directivity Pattern

    Use the customAntenna object to create the horn antenna from the horn shape and add feed to it.

    ant = customAntenna(Shape=hornShape);
    ant = createFeed(ant,[feedOffset 0],1, FeedShape=feedProbe);

    Plot the directivity pattern of the horn antenna at 7.847 GHz.


    This example shows how to create a custom antenna from an element in the antenna catalog.

    Create and Manually Mesh Horn Antenna

    Create a default horn antenna and manually mesh it with a maximum edge length of 0.01 m.

    ant = horn;
    feedLoc = ant.FeedLocation;
    m = mesh(ant,MaxEdgeLength=0.01);

    Use triangulation to store the mesh data of this horn antenna.

    [p,t] = exportMesh(ant);
    tr = triangulation(t(:,1:4),p)
    tr = 
      triangulation with properties:
                  Points: [325x3 double]
        ConnectivityList: [598x4 double]

    Create Custom Shape

    Use shape.Custom3D to generate a horn shape from triangulation data. Visualize the shape.

    hornShape = shape.Custom3D(tr);

    Create a box.

    hole = shape.Box(Length=0.012, Width=0.004, Height=0.005);
    translate(hole,[-hole.Length 0 (hole.Length/2)+hole.Height/2]);

    Cut a hole in the horn geometry by subtracting the box from it. Visualize the custom shape.

    hornShape = subtract(hornShape,hole);

    Create Custom Antenna

    Use customAntenna to create a custom antenna from the custom horn shape. Add feed to it and visualize the antenna.

    ant = customAntenna(Shape=hornShape);
    [~] = createFeed(ant,feedLoc,1);

    This example shows how to create a conformal array of 4 custom microstrip patch antennas on a common ground plane.

    Create patch antenna shape

    Create ground plane, patch, and feed shape. Add the patch and feed shapes to generate the patch antenna shape.

    gnd = shape.Rectangle(Length=0.2, Width=0.2);
    patch1 = shape.Rectangle(Length=0.02, Width=0.02);
    feed1 = shape.Rectangle(Length=0.006, Width=0.001);
    [~] = rotateY(feed1,90);
    [~] = translate(feed1,[0 0 feed1.Length/2]);
    [~] = translate(patch1,[0 0 feed1.Length]);
    ant1 = patch1 + feed1;

    Create other elements of array

    Create 3 identical patch antenna shapes from the initial design.

    ant2 = copy(ant1);
    ant3 = copy(ant1);
    ant4 = copy(ant1);
    [~]= translate(ant1,[0.01 0 0]);
    [~]= translate(ant2,[0.06 -0.08 0]);
    [~]= translate(ant3,[0.05 0.04 0]);
    [~]= translate(ant4,[-0.065 0.06 0]);

    Create Conformal Array

    Add all the antenna shapes and the ground plane shape to generate a conformal array configuration.

    antShape = ant1 + ant2 + ant3 + ant4;
    arrayShape = antShape + gnd;

    Use this conformal array shape in a customAntenna and add feed points to the array elements. Visualize the conformal array.

    conformalArrayAntenna= customAntenna(Shape=arrayShape);
    [~] = createFeed(conformalArrayAntenna,[0.01 0 0; 0.06 -0.08 0; 0.05 0.04 0; -0.065 0.06 0],[1 1 1 1]);

    Version History

    Introduced in R2023b