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.
Scanned 9/5/2026
Install to Claude Code
npx -y skills add matlab/matlab-agentic-toolkit --skill matlab-design-antenna --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Matlab Design Antenna?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/matlab-matlab-design-antenna)More formats (shields.io, HTML) on the badges page.
---
name: matlab-design-antenna
description: >
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.
license: https://www.mathworks.com/content/dam/mathworks/license/pmrl/license.md
metadata:
author: MathWorks
version: "2.0"
---
# 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.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!