Skip to main content
ClaudeWave
EN, English
Skill1.2k repo starsupdated 6d ago

matlab-design-pcb-coupler

# matlab-design-pcb-coupler This skill designs passive power-splitting and beam-forming networks including Wilkinson splitters, branchline and ratrace couplers, directional couplers, corporate dividers, and Rotman lenses for PCB layouts. Use it when a user requests creation or design of any coupler, splitter, power divider, combiner, or beam-forming component, invoking the skill before code generation since class names and design methods vary by coupler type.

Install in Claude Code
Copy
git clone --depth 1 https://github.com/matlab/matlab-agentic-toolkit /tmp/matlab-design-pcb-coupler && cp -r /tmp/matlab-design-pcb-coupler/skills-catalog/rf-and-mixed-signal/matlab-design-pcb-coupler ~/.claude/skills/matlab-design-pcb-coupler
Then start a new Claude Code session; the skill loads automatically.

SKILL.md

# Designing Couplers and Splitters

## When to Use

- Designing Wilkinson splitters (equal, unequal, wideband) for power division
- Creating branchline or ratrace couplers for quadrature or sum/difference networks
- Building corporate power dividers for array feed networks
- Designing directional couplers for signal sampling
- Creating SIW splitters or Rotman lenses for beam-forming

## When NOT to Use

- Designing transmission lines — use `matlab-design-pcb-txline`
- Designing filters — use `matlab-design-pcb-filter`
- Designing passive components (inductors, capacitors, baluns) — use `matlab-design-pcb-passive`
- Cascading couplers with other components — use `matlab-integrate-pcb-circuit`
- Optimizing coupler performance — use `matlab-optimize-pcb-design`

## Typical Workflow

1. **Before:** `matlab-manage-pcb-material` — set up substrate and conductor
2. **This skill:** Design the coupler or splitter
3. **Check mesh/memory:** `memoryEstimate(obj, fc, 'RetainMesh', true)` — inspect auto-mesh density before committing to a full solve
4. **After:** `matlab-analyze-em` — validate S-parameters → `matlab-optimize-pcb-design` — tune dimensions → `matlab-integrate-pcb-circuit` — cascade into larger network

## Quick Reference — Component Selection

| Object | Type | Ports | Best For |
|--------|------|-------|----------|
| `wilkinsonSplitter` | Equal power divider | 3 | Standard 2-way equal split |
| `wilkinsonSplitterUnequal` | Unequal power divider | 3 | Asymmetric power distribution |
| `wilkinsonSplitterWideband` | Wideband equal divider | 3 | Multi-octave equal split |
| `couplerBranchline` | 90° hybrid | 4 | Quadrature combining/splitting |
| `couplerBranchlineWideband` | Wideband 90° hybrid | 4 | Multi-section wideband quadrature |
| `couplerRatrace` | 180° hybrid | 4 | Sum/difference networks |
| `couplerDirectional` | Directional coupler | 4 | Sampling, multi-section symmetric |
| `splitterTee` | T-junction | 3 | Simple reactive split |
| `powerDividerCorporate` | N-way corporate | N+1 | Array feed networks |
| `SIWSplitter` | SIW power divider | 3 | High-freq waveguide split |
| `rotmanLens` | Beam-forming network | N beam + N array | True-time-delay phased arrays |

## Wilkinson Splitters

### Equal Split

```matlab
ws = design(wilkinsonSplitter, 3e9);
show(ws);
memoryEstimate(ws, 3e9, 'RetainMesh', true);  % Check mesh before solving
sp = sparameters(ws, linspace(1e9, 5e9, 51), 'SweepOption', 'interp');
rfplot(sp);
```

Key properties: `SplitLineLength`, `SplitLineWidth`, `Resistance`, `PortLineLength`, `PortLineWidth`, `GroundPlaneWidth`.

### Unequal Split

```matlab
ws = wilkinsonSplitterUnequal;
ws = design(ws, 3e9);
show(ws);
```

The power division ratio is controlled by the impedance transformation arms.

**Property reference (2-element vector properties):**

| Property | Description | Default |
|---|---|---|
| `SplitLineLength` | Length of split lines (m) | `0.0279` |
| `SplitLineWidth` | Width of split lines (m) | `[0.0014 0.0049]` (2-element vector: one per arm) |
| `MatchLineLength` | Length of output matching lines (m) | `0.0277` |
| `MatchLineWidth` | Width of output matching lines (m) | `[0.0039 0.0066]` (2-element vector: one per arm) |
| `Resistance` | Isolation resistor (ohms) | `106` |

### Wideband Wilkinson

Multi-section for extended bandwidth:

```matlab
ws = wilkinsonSplitterWideband;
ws = design(ws, 5e9);
show(ws);
sp = sparameters(ws, linspace(2e9, 8e9, 51), 'SweepOption', 'interp');
rfplot(sp);
```

**Property reference (vector properties scale with `NumSections`):**

| Property | Description | Default (3 sections) |
|---|---|---|
| `NumSections` | Number of cascaded sections | `3` |
| `Shape` | Shape of sections | `"Rectangular"` (`"Circular"`) |
| `SplitLineWidth` | Width of quarter-wave transformers (m) | `[8.55e-04 0.0014 0.0021]` (vector, one per section) |
| `Resistance` | Isolation resistor values (ohms) | `[100 183.40 141.42]` (vector, one per section) |

### Multi-Layer Wilkinson

```matlab
ws = design(wilkinsonSplitter, 5e9);
sub = dielectric("FR4", "Teflon");
sub.Thickness = [1e-3 0.5e-3];         % Set Thickness BEFORE assigning to component
ws.Substrate = sub;
ws.Height = 1.5e-3;
show(ws);
```

## Branchline Couplers

### Standard (Single-Section)

```matlab
bl = design(couplerBranchline, 5e9);
show(bl);

freq = linspace(3e9, 7e9, 51);
sp = sparameters(bl, freq, 'SweepOption', 'interp');
rfplot(sp);
```

Key properties: `SeriesArmLength`, `SeriesArmWidth`, `ShuntArmLength`, `ShuntArmWidth`, `PortLineLength`, `PortLineWidth`.

### Wideband (Multi-Section)

```matlab
blw = couplerBranchlineWideband;
blw.NumSections = 3;
blw = design(blw, 5e9);
show(blw);
```

**Property reference (vector properties scale with `NumSections`):**

| Property | Description | Default (2 sections) |
|---|---|---|
| `NumSections` | Number of branchline sections | `2` |
| `SeriesArmWidth` | Width of series arms (m) | `0.0051` (scalar or vector) |
| `ShuntArmWidth` | Width of shunt arms (m) | `[0.00096 0.0029 0.00096]` (vector, NumSections+1 elements) |
| `IsShielded` | Add metal shielding | `false` |

### Branchline with DGS

Adding DGS improves directivity and isolation:

```matlab
bl = design(couplerBranchline, 5e9);
dgsShape = dumbbell;
dgsShape.SideLength = 3e-3;       % Head size (default Type='Square')
dgsShape.ArmLength = 5e-3;
dgsShape.ArmWidth = 0.3e-3;
bl = dgs(bl, {dgsShape});         % Must capture return value
show(bl);
```

### Analysis Methods for Couplers

```matlab
freq = linspace(3e9, 7e9, 51);

% Coupling factor (S31 for branchline)
coupling(bl, freq);

% Directivity
directivity(bl, freq);

% Isolation (S41 for branchline)
isolation(bl, freq);
```

## Ratrace Coupler

180° hybrid (sum/difference port):

```matlab
rr = design(couplerRatrace, 5e9);
show(rr);

freq = linspace(3e9, 7e9, 51);
sp = sparameters(rr, freq, 'SweepOption', 'interp');
rfplot(sp);

% Analysis
coupling(rr, freq);
directivity(rr, freq);
isolation(rr, freq);
```

Key properties: `
matlab-access-datafeedSkill

>

matlab-analyze-ams-waveformSkill

Analyze AMS waveform data using Mixed-Signal Blockset utilities: phase noise measurement, clock jitter, anti-aliased resampling, timing measurements, lock time, INL/DNL, ADC/DAC calibration, HSpice import. Use when analyzing time-domain voltage from PLL/VCO/clock simulations, measuring phase noise from variable-step solver output, computing jitter, or resampling non-uniform data.

matlab-analyze-dataSkill

Analyze data using MATLAB. Use when the task involves tables, timetables, time-series data, numeric arrays, sensor matrices, or gridded data — including but not limited to exploring, filtering, sorting, cleaning, transforming, aggregating, smoothing, padding, trimming, and answering questions about data. MATLAB provides extensive, easy-to-use built-in functions for these workflows with no additional products required.

matlab-analyze-dependenciesSkill

Analyze the effective toolbox file set to produce a Dependency Manifest — classify all transitive dependencies as included, product, add-on, or external-unresolved, then present resolution options with tradeoffs. Use after matlab-define-toolbox-api when the spec is approved.

matlab-analyze-emSkill

S-parameters, insertion loss, fields, currents, mesh control, and solver selection for RF PCB performance validation. TRIGGER: user asks to compute S-parameters, analyze insertion/return loss, extract fields or currents, compare MoM vs FEM, or control mesh for any RF PCB component. Invoke BEFORE writing sparameters() or solver code — API is non-obvious. SKIP: designing or creating components (use the specific matlab-design-pcb-* skill), material/stackup setup only (use matlab-manage-pcb-material), optimization sweeps (use matlab-optimize-pcb-design), PDN/IR-drop analysis (use matlab-analyze-pcb-pdn).

matlab-analyze-installed-antennaSkill

Analyze antennas installed on electrically large conducting platforms using MATLAB Antenna Toolbox. Loads platform geometry from STL/STEP/IGES, installs antenna elements, selects electromagnetic solvers (MoM-PO, FMM, MoM), and computes patterns, impedance, coupling, and efficiency. Use when the user wants to model an antenna on a vehicle, aircraft, ship, satellite, or other large structure.

matlab-analyze-pcb-pdnSkill

PDN DC voltage/current analysis, IR drop, design rule checking, and multi-net batch analysis on imported PCB layouts. TRIGGER: user asks about power integrity, PDN analysis, IR drop, voltage distribution, current density, power nets, or design rule checking on a PCB. Invoke BEFORE writing code — the PDN API chain is specialized and non-obvious. SKIP: importing a PCB file (use matlab-read-pcb-layout), EM field/S-parameter extraction (use matlab-analyze-em), material/stackup setup only (use matlab-manage-pcb-material), transmission line design (use matlab-design-pcb-txline).

matlab-analyze-rcsSkill

Calculate and visualize monostatic and bistatic radar cross section (RCS) using MATLAB Antenna Toolbox. Computes RCS of platforms, antennas, and arrays with PO, MoM, and FMM solvers, supporting HH/VV/HV/VH polarization, GPU acceleration, and near-field observation. Use when the user wants to compute, plot, or analyze radar cross section.