# Matlab Design Antenna

> Design antennas, arrays, and PCB antennas using MATLAB Antenna Toolbox. Covers catalog antenna design and pattern analysis, custom antenna construction (customAntenna + shape.*), PCB antenna design (pcbStack + antenna.*), finite and infinite array design, AI-accelerated design exploration (AIAntenna, patternFromAI), and optimization (SADEA/TR-SADEA). Use when the user wants to design, create, model, analyze, optimize, or fabricate an antenna or array.

- Skill: `matlab/matlab-design-antenna` (Agent Skill, multi-file: 8 files)
- Install (CLI): `npx skillmds@latest add matlab/matlab-design-antenna`
- Raw SKILL.md: https://api.skillmd.com/api/skills/matlab/matlab-design-antenna/raw
- Safety review: PASS (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- License: https://www.mathworks.com/content/dam/mathworks/license/pmrl/lic
- Author: matlab (https://skillmd.com/u/matlab)
- Updated: 2026-08-19
- Page: https://skillmd.com/skills/matlab/matlab-design-antenna

---


# Antenna and Array Design

Design, analyze, and optimize antennas and arrays using MATLAB Antenna Toolbox —
from catalog elements to custom shapes, PCB fabrication, AI-accelerated exploration,
and surrogate-assisted optimization.

## When to Use

**Catalog antenna design**
- Design a standard antenna at a frequency (dipole, patch, horn, helix, Yagi, etc.)
- Analyze radiation pattern (3D, 2D cuts, polarization, beamwidth, sidelobes)
- Compute impedance, S-parameters, or return loss
- Set substrate material before design
- Compare patterns across antennas or frequencies

**Custom antenna design**
- Build non-catalog antennas from geometric primitives (shape.*)
- Construct 3D structures (waveguides, horns, cavities) via extrusion
- Import STL/CAD geometry and add feeds
- Configure delta-gap or probe feeds on custom structures

**PCB antenna design**
- Build multi-layer PCB antenna stackups (pcbStack)
- Create custom metal patterns with boolean operations (antenna.*)
- Configure probe, edge, or aperture-coupled feeds
- Export Gerber files for fabrication
- Convert catalog antennas to pcbStack

**Array design**
- Design linear, rectangular, circular, or conformal arrays
- Beam steering, amplitude tapering, grating lobe analysis
- Infinite array analysis (scan impedance, scan blindness, Floquet BC)
- MIMO/handset multi-antenna isolation and ECC
- Mutual coupling analysis

**AI-accelerated design**
- Rapid parametric sweeps with AIAntenna surrogate models
- Reconstruct 3D patterns from 2D slices (patternFromAI)
- Full-factorial design space exploration
- Export AI-tuned designs for full-wave validation

**Optimization**
- Optimize antenna dimensions for gain, bandwidth, SLL, or F/B ratio
- Built-in optimize() for catalog antennas with string objectives
- SADEA/TR-SADEA with custom evaluation functions for pcbStack/customAntenna
- Geometric constraints (linear and nonlinear)

## When NOT to Use

- Reflector antennas, reflectarrays, installed antennas, or RCS — use `matlab-analyze-antenna-structures`
- Impedance matching networks, measuredAntenna, RF propagation, or SAR — use `matlab-integrate-antenna`

## Must-Follow Rules

### Catalog Antennas
- **Prefer catalog antennas over `customAntenna`** — use `customAntenna` only when no catalog antenna or system antenna matches the requested geometry
- **Always use `design()`** unless user provides explicit dimensions or antenna lacks design() support
- **Set substrate BEFORE `design()`** — design() adapts dimensions to the substrate
- **Mesh at lambda/8** for substrate antennas after design() and before analysis
- **Use `SweepOption="interp"`** only with `sparameters` (not `impedance`) on substrate antennas

### Custom Antennas (customAntenna)
- **Use `shape.*` namespace** (NOT `antenna.*`) with `customAntenna`
- **All dimensions in meters** — not mm or cm
- **Always define a feed** — `customAntenna` without `createFeed` cannot be analyzed
- **Feed must be at a geometric discontinuity** — not middle of flat plate
- **Extrude first, rotate second** — `extrudeLinear` requires XY-plane shapes
- **Shapes are handle objects** — use `copy()` to preserve before transforming

### PCB Antennas (pcbStack)
- **Set `BoardThickness` BEFORE `Layers`** — otherwise dielectric gets wrong thickness
- **Use `antenna.*` namespace** (NOT `shape.*`) for pcbStack metal patterns
- **Layer indices are cell array positions** — in `{M,D,M}`, ground is index 3
- **`design()` does not work on pcbStack** — design catalog antenna first, then convert
- **Gerber `Filename` must be char** (`'single quotes'`), not "string"

### Arrays
- **Always pass element as 3rd argument** to `design(arr, freq, element)` — omitting resets to dipole
- **`AmplitudeTaper` for rectangularArray is column-major** order
- **Infinite arrays have no NumElements/ElementSpacing** — unit cell = ground plane size
- **Use `phaseShift()` for finite** steering, `ScanAzimuth/ScanElevation` for infinite

### AI Workflows
- **Use `design(..., ForAI=true)`** — direct `em.ai.AIAntenna()` constructor not supported
- **Only 12 antenna types** have pretrained AI models
- **Input slices for `patternFromAI` must be row vectors** with 1-degree integer spacing
- **Always validate** AI predictions with `exportAntenna` + full-wave simulation

### Optimization
- **Start from `design()`** to get physically reasonable initial dimensions
- **Tier 1 bounds: cell array** `{lb1,lb2; ub1,ub2}`, **Tier 2 bounds: numeric matrix** `[lb;ub]`
- **Negate metrics for maximization** in custom evaluation functions (SADEA minimizes)
- **Wrap custom eval in try/catch** — return 1e6 penalty for invalid geometry
- **Set `FrequencyRange` explicitly** for bandwidth optimization (default +/-5% may not match target)

## Workflow

### 1. Catalog Antenna Design

1. **Parse** — Identify antenna type, frequency, substrate, constraints
2. **Create** — Set substrate (if any), call `design(ant, freq)`
3. **Mesh** — `mesh(ant, MaxEdgeLength=lambda/8)` for substrate antennas
4. **Analyze** — Impedance, S-parameters, 3D pattern, 2D cuts with `polarpattern`
5. **Report** — Key metrics with units (Z, BW, gain, beamwidth)

### 2. Custom Antenna Design

1. **Build shapes** — `shape.*` primitives (Rectangle, Box, Cylinder, Polygon)
2. **Transform** — `translate`, `rotate`, `scale` (handle objects — copy first)
3. **Combine** — Boolean: `+` (union), `-` (subtract), `&` (intersect)
4. **Extrude** — `extrudeLinear` (taper) or `extrudeRotate` (revolution)
5. **Assemble** — `customAntenna(Shape=...)`, `createFeed(ant, loc, numEdges)`
6. **Mesh & analyze** — `mesh(ant, MaxEdgeLength=lambda/6)`, impedance, pattern

### 3. PCB Antenna Design

1. **Define stackup** — `pcbStack`, set `BoardThickness` FIRST, then `Layers`
2. **Create patterns** — `antenna.*` shapes with boolean operations
3. **Configure feed** — `FeedLocations = [x, y, sigLayer, gndLayer]`
4. **Analyze** — S-parameters (with `SweepOption="interp"`), pattern
5. **Export** — `gerberWrite` with PCBWriter, PCBServices, PCBConnectors

### 4. Array Design

1. **Build array** — Set type, size/elements, then `design(arr, freq, element)`
2. **Steer** — `phaseShift()` finite, `ScanAzimuth/ScanElevation` infinite
3. **Taper** — `AmplitudeTaper` (column-major for rectangular)
4. **Analyze** — `arrayFactor` (fast) → `patternMultiply` → `pattern` (accurate)
5. **Coupling** — `sparameters`, `correlation`, isolation metrics

### 5. AI-Accelerated Design

1. **Create** — `design(ant, freq, ForAI=true)` for supported types
2. **Explore** — `tunableRanges`, parametric sweep, `resonantFrequency`, `bandwidth`
3. **Validate** — `exportAntenna` + full-wave impedance/pattern
4. **Reconstruct** — `patternFromAI` from 2D slices (row vectors, 1-deg spacing)

### 6. Optimization

1. **Formulate** — Choose objective, design variables, bounds, constraints
2. **Select tier** — Catalog + built-in objective → Tier 1; else → Tier 2
3. **Run** — `optimize()` or `OptimizerSADEA`/`OptimizerTRSADEA`
4. **Extract** — `getBestMemberData`, `showConvergenceTrend`, `isConverged`
5. **Validate** — Full analysis sweep on optimized design

## Key Classes

| Class | Purpose |
|-------|---------|
| `design()` | Scale catalog antennas to frequency |
| `customAntenna` | Arbitrary geometry from shape.* primitives |
| `pcbStack` | Multi-layer PCB antenna with antenna.* shapes |
| `linearArray` / `rectangularArray` / `circularArray` | Finite arrays |
| `conformalArray` | Arbitrary element positions (MIMO, custom) |
| `infiniteArray` | Unit cell with Floquet BC |
| `em.ai.AIAntenna` | Pretrained surrogate for instant prediction |
| `patternFromAI` | 3D pattern from 2D slices |
| `optimize()` | Built-in SADEA for catalog antennas |
| `OptimizerSADEA` / `OptimizerTRSADEA` | Custom optimization |

## Conventions

### Coding Standards
- 4-space indentation, lowerCamelCase variables, UpperCamelCase Name-Value args
- `"double quotes"` for strings (except Gerber `Filename` which requires `'char'`)
- `fprintf` for formatted output
- Do not add titles to Antenna Toolbox plots (`pattern`, `show`, `rfplot`, `impedance`)
- **Do** add titles to manual `plot` figures and `TitleTop` to `polarpattern`
- Show all plots in separate figures. Include units in all output.
- Use `physconst("LightSpeed")` — never hardcode 3e8

### 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 catalog antennas (types, design(), substrate, patterns) | `references/catalog-antennas.md` |
| Building custom antennas (shape.*, extrusion, feeds, substrate) | `references/custom-antennas.md` |
| Designing PCB antennas (pcbStack, layers, boolean, Gerber) | `references/pcb-antennas.md` |
| Designing arrays (finite, infinite, steering, taper, MIMO) | `references/arrays.md` |
| AI design exploration (AIAntenna, patternFromAI, surrogates) | `references/ai-antenna-workflows.md` |
| Optimizing antennas (SADEA, bounds, constraints, custom eval) | `references/optimization.md` |

----

Copyright 2026 The MathWorks, Inc.

