Generated banner for Matlab Analyze Antenna Structures
Generated logo for Matlab Analyze Antenna Structures

Matlab Analyze Antenna Structures

MathWorksOfficialCreated by MathWorks

  • Skill
  • Tool integration
  • Science and research
  • BSD-2-Clause
  • No issues found

From the author

Design and analyze electrically large antenna structures using MATLAB Antenna Toolbox. Covers reflector antennas (parabolic, Cassegrain, Gregorian, offset, corner, cylindrical, spherical, custom STL), reflectarrays and reconfigurable intelligent surfaces (RIS), antennas installed on platforms (vehicles, aircraft, ships, satellites), and radar cross section (RCS) analysis. Includes solver selection (MoM-PO, PO, MoM, FMM), mesh control, and GPU acceleration. Use when the user wants to design a dish/reflector antenna, reflectarray, analyze an antenna on a platform, or compute RCS.
— the description by MathWorks

AutoGineer summary

Written by AutoGineer from the skill’s own files, not by the author

This skill provides a structured approach to designing and analyzing electrically large antenna systems, including various reflector types, reflectarrays, reconfigurable intelligent surfaces, and platform-mounted antennas. It leverages the MATLAB Antenna Toolbox to perform electromagnetic analysis, compute radar cross sections (RCS), and select appropriate solvers like MoM-PO, PO, MoM, or FMM based on the specific geometry and material properties of the target.

What it does

  • Designs reflector antennas including parabolic, Cassegrain, Gregorian, and custom STL geometries.
  • Characterizes reflectarrays and reconfigurable intelligent surfaces using unit cell phase control.
  • Analyzes antenna performance when installed on complex platforms like vehicles, aircraft, or ships.
  • Computes monostatic and bistatic radar cross sections for various targets and polarizations.
  • Provides guidance on selecting and configuring electromagnetic solvers for accurate simulation.
  • Supports mesh control and GPU acceleration to optimize analysis of large-scale structures.

When to use it

  • When designing dish or reflector antennas for satellite or terrestrial communication.
  • When developing reflectarray antennas or RIS with specific phase requirements.
  • When evaluating the performance of an antenna mounted on a large conducting platform.
  • When calculating the radar cross section of a target for electromagnetic signature analysis.

Advantages

  • Enables trade studies for reflector antennas using analytical calculators.
  • Supports complex platform integration via STL, STEP, and IGES file imports.
  • Offers multiple solver options to balance computational speed and simulation accuracy.
  • Provides tools for both far-field pattern analysis and near-field RCS computation.

Usage examples

“Design a prime-focus parabolic reflector antenna operating at 10 GHz.”
The agent will guide the creation of a reflectorParabolic object, set the exciter, and use the design method to calculate dimensions based on the specified frequency.
“How do I analyze the RCS of a metal plate at 5 GHz?”
The agent will provide a script using the platform object to load the plate geometry and the rcs function to compute the monostatic RCS using the PO solver.
“Set up an installed antenna analysis for a dipole on a vehicle model.”
The agent will provide instructions to define the platform from an STL file, configure the installedAntenna object, and specify the appropriate solver for the platform geometry.

Install

  1. Download the skill as a ZIP:

    https://autogineer.com/agent-skills/matlab/matlab-analyze-antenna-structures/download
  2. Unzip it into the cross-client skills folder of your project:

    mkdir -p .agents/skills && unzip matlab-analyze-antenna-structures.zip -d .agents/skills

Documentation by MathWorks

Antenna Structure Design and Analysis

Design, analyze, and visualize electrically large antenna structures — reflector antennas, reflectarrays/RIS, platform-installed antennas, and radar cross section — using MATLAB Antenna Toolbox with appropriate EM solvers for each problem class.

When to Use

Reflector antennas

  • Design a parabolic dish, satellite dish, or prime-focus reflector

  • Design a Cassegrain or Gregorian dual-reflector system

  • Design an offset-fed reflector (no blockage)

  • Design a corner reflector, cylindrical or spherical reflector

  • Use reflectorCalculator for trade studies

  • Import custom reflector geometry from STL files

Reflectarrays and RIS

  • Design a reflectarray antenna with unit cell phase control

  • Design a reconfigurable intelligent surface (RIS) with quantized phases

  • Characterize unit cell reflection phase (S-curve)

  • Synthesize an aperture phase distribution for beam steering

  • Verify pattern via pattern multiplication

Installed antennas on platforms

  • Mount an antenna on a vehicle, aircraft, ship, satellite, or large structure

  • Analyze installed antenna patterns, coupling, or efficiency

  • Load platform geometry from STL/STEP/IGES files

  • Generate platform geometry programmatically

Radar cross section

  • Compute monostatic or bistatic RCS

  • Analyze RCS of a platform, antenna, or array

  • Compare RCS across polarizations (HH, VV, HV, VH)

  • Compute RCS of a dielectric target

When NOT to Use

  • Designing standalone antenna elements or arrays (no platform) — use matlab-design-antenna

  • Optimizing antenna dimensions with SADEA/TR-SADEA — use matlab-design-antenna

  • Impedance matching, measured antenna objects, RF propagation, or SAR — use matlab-integrate-antenna

  • A flat reflector backing a dipole — use matlab-design-antenna (catalog element)

Must-Follow Rules

Reflectors
  • Set Exciter BEFORE design() — design(obj, freq) takes two arguments only for reflectors

  • cavity is NOT a valid exciter — it will error

  • reflectorCorner and reflectorCylindrical have no SolverType property — always MoM

  • Array as exciter: design the array first, assign to Exciter, do NOT call design() on reflector afterward

Reflectarrays
  • infiniteArray only supports pcbStack with exactly 3 layers (metal-dielectric-metal)

  • Set BoardThickness before Layers on pcbStack — order matters

  • Feed offset: Use [Lp/4, 0, 1, 3] — not [0 0 1 3]

  • Always unwrap phase with unwrap() and normalize magnitude (peak = 1)

  • Pattern multiplication adds dB — element pattern (dB) + array factor (dB), NOT linear multiplication

Installed Antennas
  • installedAntenna only supports pure metal antennas — no dielectric substrates

  • Platform Units must be explicit — defaults to "mm" but ElementPosition is always in meters

  • Set ElementPosition before Element for multi-element setups

  • Always mesh explicitly before analysis — uncontrolled density causes inaccurate results

RCS
  • One of azimuth or elevation must be scalar for monostatic sweeps

  • Dielectric targets require FMM solver — PO and MoM will error

  • UseFileAsMesh = true required for dielectric .mat files

  • PO fails at grazing incidence — returns artificially low values (~-250 dBsm)

Solver Selection (All Workflows)
  • Default: MoM-PO for installed/reflectors, PO for RCS

  • Use FMM for: closed bodies, concave features, dielectric targets

  • Verify FMM convergence with solver() then convergence() after analysis

  • Mesh density: lambda/10 for MoM/FMM, lambda/6 for MoM-PO, default for PO

Workflow

1. Reflector Antenna Design
  1. Parse — Identify reflector type, frequency, exciter, f/D ratio, constraints

  2. Create — Set exciter first (if non-default), then call design(obj, freq)

  3. Customize — Adjust Radius, FocalLength, FeedOffset for custom f/D

  4. Analyze — Pattern, gain, beamwidth, impedance

  5. Report — Key metrics with units, f/D ratio, aperture in wavelengths

For trade studies, use reflectorCalculator first (instant), then createAntenna for full-wave.

2. Reflectarray / RIS Design
  1. Design unit cell — Parameterized pcbStack (3 layers) with variable patch size

  2. Characterize S-curve — Sweep patch size via planeWaveExcitation + infiniteArray + EHfields

  3. Synthesize aperture phase — Compute required phase (path delay + beam steering gradient)

  4. Map phase to geometry — Invert S-curve via interpolation; quantize for RIS

  5. Build geometry — conformalArray with unique elements at each position

  6. Verify pattern — Element pattern + array factor via patternCustom

3. Installed Antenna Analysis
  1. Create platform — Load from STL/STEP/IGES or generate programmatically

  2. Install element(s) — Set Platform, ElementPosition, Element, SolverType

  3. Mesh — mesh(ant, MaxEdgeLength=lambda/N) per solver guidelines

  4. Analyze — Pattern, impedance, S-parameters (coupling), efficiency

  5. Report — Metrics with units; verify FMM convergence if used

4. RCS Analysis
  1. Create target — Load platform from file or use antenna/array object directly

  2. Select solver — PO (default, fast), MoM (small, accurate), FMM (dielectric/concave)

  3. Compute — rcs(obj, freq, az, el, Polarization=..., Solver=...)

  4. Report — Peak RCS (dBsm), angular location, polarization

Key Classes

ClassPurpose
reflectorParabolicPrime-focus parabolic dish
cassegrain / gregorianSymmetric dual-reflector systems
cassegrainOffset / gregorianOffsetOffset dual-reflector (no blockage)
reflectorCornerCorner reflector (90/60/45 deg)
reflectorCylindrical / reflectorSphericalFan-beam / wide-scan reflectors
customDualReflectorsCustom STL reflector surfaces
reflectorCalculatorGaussian-beam analytical design (R2026a)
installedAntennaAntenna mounted on conducting platform
platform3D geometry loader (STL/STEP/IGES)
infiniteArrayPeriodic boundary conditions for unit cells
planeWaveExcitationPlane wave illumination for S-curve/RCS
conformalArrayArbitrary element positions (reflectarray geometry)
pcbStackUnit cell structure (3-layer for reflectarrays)
rcsRadar cross section function

Conventions

Coding Standards
  • 4-space indentation, lowerCamelCase variables, UpperCamelCase Name-Value args

  • "double quotes" for strings, fprintf for formatted output

  • Do not add titles to Antenna Toolbox plots (show, pattern, rcs auto-plot)

  • Do add titles to manual plot, imagesc, subplot, and TitleTop to polarpattern

  • Show all plots in separate figures. Include units in all output.

Script-First Workflow

For design, analysis, or sweep tasks — write code to .m files, run via run_matlab_file, iterate by editing and re-running. Use inline evaluate_matlab_code for quick one-off checks.

References
Load when...Reference
Designing any reflector antenna (parabolic, dual, corner, custom STL)references/reflector-antennas.md
Designing a reflectarray or RIS (unit cells, S-curve, phase synthesis)references/reflectarrays.md
Installing antennas on platforms (STL loading, multi-element, conformalArray workaround)references/installed-antennas.md
Computing monostatic/bistatic RCS (polarization, dielectric targets, GPU)references/rcs-analysis.md
Choosing between MoM-PO, PO, MoM, FMM for any applicationreferences/solver-selection.md

Copyright 2026 The MathWorks, Inc.

Files

references/installed-antennas.md

Installed Antenna Analysis

Platform Creation

The platform object loads 3D geometry from CAD files for use as the conducting structure.

Supported File Formats
FormatExtensionsUnits
STL.stlUser-configurable via Units (default: "mm")
STEP.step, .stpRead-only (embedded in file)
IGES.igs, .igesRead-only (embedded in file)
Platform Units

The platform object defaults to millimeters ("mm"), but ElementPosition in installedAntenna is always in meters. Always set Units explicitly:

plat = platform(FileName="vehicle.stl", Units="m");

% Built-in plate geometry
plat = platform(FileName="plate.stl", Units="m");

platform requires a FileName -- calling platform() with no file produces an error.

Generating Platform STL Programmatically

When no CAD file exists, generate geometry using triangulation + stlwrite:

% Open-ended metal tube
radius = 0.05; height = 0.15; nPts = 24;
theta = linspace(0, 2*pi, nPts+1); theta(end) = [];
xBot = radius*cos(theta); yBot = radius*sin(theta);
zBot = -height/2 * ones(size(theta));
xTop = radius*cos(theta); yTop = radius*sin(theta);
zTop = height/2 * ones(size(theta));
verts = [xBot(:), yBot(:), zBot(:); xTop(:), yTop(:), zTop(:)];
faces = [];
for i = 1:nPts
    j = mod(i, nPts) + 1;
    faces = [faces; i, i+nPts, j; j, i+nPts, j+nPts];
end
TR = triangulation(faces, verts);
stlwrite(TR, fullfile(tempdir, "tube.stl"));
plat = platform(FileName=fullfile(tempdir, "tube.stl"), Units="m");
Flat Rectangular Plate
Lx = 0.5; Ly = 0.3;
verts = [-Lx/2, -Ly/2, 0; Lx/2, -Ly/2, 0; Lx/2, Ly/2, 0; -Lx/2, Ly/2, 0];
faces = [1 2 3; 1 3 4];
TR = triangulation(faces, verts);
stlwrite(TR, fullfile(tempdir, "plate.stl"));
plat = platform(FileName=fullfile(tempdir, "plate.stl"), Units="m");
Box (Closed Enclosure)
Lx = 0.3; Ly = 0.2; Lz = 0.1;
x = Lx/2; y = Ly/2; z = Lz/2;
verts = [-x,-y,-z; x,-y,-z; x,y,-z; -x,y,-z; -x,-y,z; x,-y,z; x,y,z; -x,y,z];
faces = [1 3 2; 1 4 3; 5 6 7; 5 7 8; 1 2 6; 1 6 5; 2 3 7; 2 7 6; 3 4 8; 3 8 7; 4 1 5; 4 5 8];
TR = triangulation(faces, verts);
stlwrite(TR, fullfile(tempdir, "box.stl"));
plat = platform(FileName=fullfile(tempdir, "box.stl"), Units="m");
Tips for Clean STL Meshes
  • Avoid duplicate vertices at seams -- use theta(end) = []

  • Open structures work reliably with FMM/EFIE

  • Closed bodies require watertight mesh for CFIE/MFIE

  • Use stlFileChecker if platform reports "Bad features in STL file"

  • Keep triangle count reasonable (nPts=24 for cylinders is sufficient)

UseFileAsMesh

Skip remeshing when the STL comes from a dedicated mesh generator:

plat = platform(FileName="premeshed_body.stl", Units="m");
plat.UseFileAsMesh = true;

Element Installation

installedAntenna Properties
PropertyTypeDefaultDescription
Platformplatform objectrectangular plateConducting structure
Elementantenna, array, or cell arraydipoleAntenna element(s)
ElementPositionN-by-3 matrix (meters)[0 0 0.075][x, y, z] per element
Reference"feed" or "origin""feed"Position reference point
FeedVoltagescalar or vector (V)1Excitation amplitude
FeedPhasescalar or vector (deg)0Excitation phase
Tiltscalar or vector (deg)0Element rotation angle
TiltAxisvector, matrix, or string[1 0 0]Rotation axis
SolverTypestring"MoM-PO""MoM-PO", "MoM", or "FMM"
Substrate Limitation

installedAntenna only supports pure metal antennas. Dielectric substrates are not supported. Use metal-only types: dipole, monopole, dipoleFolded, invertedF, horn, hornConical, spiralArchimedean, helix, slot, vivaldi, loopCircular, bicone, discone, monocone, waveguide, and arrays of these.

Alternative for Substrate Elements: conformalArray

When any element has a dielectric substrate, use shape.Custom3D(Vertices=...) for platform/chassis elements — shape.Rectangle and other 2D parametric shapes lack the AnalysisFrequencies property that conformalArray requires internally.

freq = 2.4e9;
ant = design(patchMicrostrip, freq);

% Chassis must be Custom3D when any element has dielectric
Lx = 0.14; Ly = 0.07;
verts = [-Lx/2, -Ly/2, 0; Lx/2, -Ly/2, 0; Lx/2, Ly/2, 0; -Lx/2, Ly/2, 0];
chassis = customAntenna(Shape=shape.Custom3D(Vertices=verts));
createFeed(chassis, [0 0 0], 1);

arr = conformalArray;
arr.ElementPosition = [0 0 0.008; 0 0 0];
arr.Element = {ant, chassis};
arr.Reference = "origin";
figure; show(arr);
figure; pattern(arr, freq);
Single Element
freq = 1e9;
plat = platform(FileName=fullfile(tempdir, "plate.stl"), Units="m");  % requires plate generated above
ant = installedAntenna;
ant.Platform = plat;
ant.Element = design(dipole, freq);
ant.ElementPosition = [0 0 0.1];
Multiple Elements

Set ElementPosition before Element:

ant = installedAntenna;
ant.Platform = plat;
ant.ElementPosition = [0.1 0 0.5; -0.1 0 0.5];
ant.Element = {design(dipole, freq), design(monocone, freq)};
ant.FeedVoltage = [1 2];
ant.FeedPhase = [0 45];

FMM Configuration

FMM requires homogeneous element types in multi-port configurations. Use MoM-PO for installations with mixed antenna types (e.g., dipole + monocone).

ant.SolverType = "FMM";
s = solver(ant);
s.Iterations = 200;
s.RelativeResidual = 1e-4;
s.Precision = 2e-4;
Convergence Verification
Z = impedance(ant, freq);
s = solver(ant);
figure; convergence(s);

If not converged: increase Iterations or refine mesh.

FMM Formulations
FormulationGeometryNotes
EFIEOpen or closedDefault. Works on all geometries. Only user-settable formulation.

Note: CFIE exists as an internal class but is not user-assignable — SolverType only accepts "MoM", "MoM-PO", "FMM", "PO". MFIE does not exist in R2026a.

Multi-Antenna Pattern Visualization

Requires installedAntenna with 2+ elements. For single-element, use pattern instead.

figure;
patternSystem(ant, [1e9, 2e9]);
figure;
patternSystem(ant, [1e9, 2e9], ElementNumber=[1, 2]);
opts = PatternPlotOptions(Transparency=0.6, MagnitudeScale=[1 10]);
figure;
patternSystem(ant, [1e9, 2e9], PatternOptions=opts);

Infinite Ground Plane (Image Theory)

% Monopole with infinite ground
m = monopole;
m.GroundPlaneLength = inf;
m.GroundPlaneWidth = inf;
m = design(m, freq);

% Balanced antenna with infinite ground
r = reflector;
r.Exciter = dipole;
r.GroundPlaneLength = inf;
r.GroundPlaneWidth = inf;
r = design(r, freq);

Analysis Functions

All standard functions work on installedAntenna: pattern, patternAzimuth, patternElevation, impedance, sparameters, current, charge, efficiency, EHfields, beamwidth.

Note: EHfields expects a 3-by-M matrix (columns are points), not M-by-3.

S-Parameter Plotting
freqRange = linspace(1.9e9, 2.1e9, 21);
S = sparameters(ant, freqRange);

% Plot all S-parameters (default)
figure; rfplot(S);

% Plot specific S-parameter: rfplot(S, row, col)
figure; rfplot(S, 2, 1);   % plots S21 — NOTE: rfplot(S, [2 1]) does NOT work

% Manual extraction (alternative)
figure;
plot(S.Frequencies/1e9, 20*log10(abs(squeeze(S.Parameters(2,1,:)))), LineWidth=1.5);
xlabel("Frequency (GHz)"); ylabel("|S_{21}| (dB)");
title("Isolation"); grid on;

Copyright 2026 The MathWorks, Inc.

Requirements and compatibility

Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Kiro, OpenCode, Goose, Amp, Roo Code, JetBrains Junie, Factory Droid, Devin (ex-Windsurf), Mistral Vibe, OpenHands, Letta

“Works with” means the tool reads the open Agent Skills format; a skill written for one tool may use features others lack.

Security

No issues found by our static scan· No issues found

A static scan is not a guarantee. Skills are third-party content: review a skill before you let an agent use it.

Attribution and licence

Created by
MathWorks
Publisher
MathWorks (Official)
Source
matlab/matlab-agentic-toolkit · skills-catalog/rf-and-mixed-signal/matlab-analyze-antenna-structures · commit 2a7f215
Licence
BSD 2-Clause License (redistribution allowed)
  • LICENSE (added by AutoGineer from LICENSE.md)
  • ATTRIBUTION.md (written by AutoGineer)
Synced

AutoGineer is not affiliated with or endorsed by MathWorks or MathWorks.

Download ZIP

The ZIP holds the skill’s files, its licence files and an ATTRIBUTION.md. Download matlab-analyze-antenna-structures.zip