matlab-design-pcb-coupler
Wilkinson, branchline, ratrace, directional couplers, corporate dividers, Rotman lenses for power splitting and beam-forming. TRIGGER: user asks to design, create, or analyze any coupler, splitter, power divider, combiner, or Rotman lens.
Install / Use
npx skills add matlab/matlab-agentic-toolkit --skill matlab-design-pcb-couplerInstalls into whichever agent you are using.
SKILL.md
Installable skill definition
Quality Score
Category
Content & MediaSupported Platforms
Our assessment of matlab-design-pcb-coupler
matlab-design-pcb-coupler scores 93/100 on our quality scale, 237th of 1,199 Content & Media skills we index (top 20%).
Its SKILL.md is 16 KB long, well organised into 32 sections with 20 code examples: a thorough specification that gives an agent plenty to work with.
With 1,098 GitHub stars, it is one of the more widely adopted skills in the catalogue.
Maintenance, license and trust
- The repository was last updated 18 days ago, so matlab-design-pcb-coupler is actively maintained.
- No license is declared. By default that means all rights are reserved: you can read it, but reusing or redistributing it is not clearly permitted. Ask the author before building on it commercially.
- Its trust signals score 88/100, with 1 caution from licensing, adoption, age or documentation. These come from repository metadata, not a code audit — read the skill file before letting an agent act on it.
matlab-design-pcb-coupler compared with similar skills
All 4 of these similar skills score higher than matlab-design-pcb-coupler; compare them before choosing.
| Skill | Score | Stars | Updated | Format |
|---|---|---|---|---|
| matlab-design-pcb-coupler (this skill)by matlab | 93 | 1.1k | 18d ago | SKILL.md |
| siyuanby siyuan-note | 100 | 46.6k | today | MCP Server |
| algorithmic-artby anthropics | 100 | 177.9k | 11d ago | SKILL.md |
| pptxby anthropics | 100 | 177.9k | 11d ago | SKILL.md |
| designby nextlevelbuilder | 100 | 130.2k | 12d ago | SKILL.md |
Frequently asked questions
- How do I install matlab-design-pcb-coupler?
- Run
npx skills add matlab/matlab-agentic-toolkit --skill matlab-design-pcb-coupler. The install tabs above show the steps for each supported agent. - Which AI agents does matlab-design-pcb-coupler work with?
- It is written for Universal, as a SKILL.md file. Other agents that read the same format can often use it too.
- Is matlab-design-pcb-coupler safe to use?
- It declares no license and scores 88/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
- Is matlab-design-pcb-coupler still maintained?
- The repository was last updated 18 days ago, so matlab-design-pcb-coupler is actively maintained.
Skill content
View source on GitHubname: matlab-design-pcb-coupler description: "Wilkinson, branchline, ratrace, directional couplers, corporate dividers, Rotman lenses for power splitting and beam-forming. TRIGGER: user asks to design, create, or analyze any coupler, splitter, power divider, combiner, or Rotman lens. Invoke BEFORE writing code — class names and design() availability vary per coupler type. SKIP: EM simulation/S-parameter extraction of an existing component (use matlab-analyze-em), building custom non-catalog geometry (use matlab-assemble-pcb-layout), material/stackup setup only (use matlab-manage-pcb-material), cascading multiple components (use matlab-integrate-pcb-circuit)." license: https://www.mathworks.com/content/dam/mathworks/license/pmrl/license.md metadata: author: MathWorks version: "1.0"
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-transmission-line - 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
- Before:
matlab-manage-pcb-material— set up substrate and conductor - This skill: Design the coupler or splitter
- Check mesh/memory:
memoryEstimate(obj, fc, 'RetainMesh', true)— inspect auto-mesh density before committing to a full solve - 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
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
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:
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
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)
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)
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:
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
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):
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: RingRadius, RingWidth, PortLineWidth, PortLineLength.
Charge and Current on Ratrace
figure; current(rr, 5e9);
figure; charge(rr, 5e9);
Directional Coupler
Multi-section symmetric directional coupler. Note: couplerDirectional does not have a design function — set properties manually:
dc = couplerDirectional;
dc.NumSections = 3;
dc.Width = [2.8e-3 2.8e-3 2.8e-3]; % One value per section
dc.Spacing = [1.3e-3 1.3e-3 1.3e-3]; % One value per section
dc.GroundPlaneLength = 0.15; % Must accommodate total length
show(dc);
freq = linspace(3e9, 7e9, 51);
coupling(dc, freq);
directivity(dc, freq);
Key properties: NumSections, Length (scalar), Width (vector, one per section), Spacing (vector, one per section), PortLineWidth, GroundPlaneLength.
Tee Junction and Corporate Dividers
Splitter Tee
Simple reactive T-junction. The Shape property controls the junction geometry:
| Shape Value | Description |
|---|---|
| 'RectangularMitered' | Rectangular with mitered bends (default) |
| 'RectangularCurved' | Rectangular with curved bends |
| 'Circular' | Circular junction |
st = splitterTee;
st = design(splitterTee, 5e9);
show(st);
sp = sparameters(st, linspace(3e9, 7e9, 51), 'SweepOption', 'interp');
rfplot(sp);
% Circular shape variant
st2 = splitterTee(Shape='Circular');
st2 = design(st2, 5e9);
show(st2);
Corporate Power Divider (N-way)
For array feed networks:
cpd = powerDividerCorporate;
cpd.NumOutputPorts = 4; % 1:4 divider
cpd = design(cpd, 5e9);
show(cpd);
sp = sparameters(cpd, linspace(3e9, 7e9, 51), 'SweepOption', 'interp');
rfplot(sp);
8-Way Corporate Divider
cpd = powerDividerCorporate;
cpd.NumOutputPorts = 8;
cpd = design(cpd, 2.4e9);
show(cpd);
SIW Splitter
siw_s = SIWSplitter;
siw_s = design(siw_s, 10e9);
show(siw_s);
The FeedLine property is a traceTapered object controlling the microstrip-to-SIW transition:
siw_s.FeedLine.InputWidth = 1e-3;
siw_s.FeedLine.OutputWidth = 3e-3;
show(siw_s);
Design Workflow
- Select topology based on requirements (equal/unequal split, bandwidth, isolation)
- Design at center frequency:
obj = design(ObjectType, fc) - Visualize:
show(obj) - Analyze S-parameters:
sparameters(obj, freq, 'SweepOption', 'interp') - Check metrics:
coupling,directivity,isolation - Customize: Adjust properties for specific impedance, substrate, dimensions
- Optimize if needed (see
matlab-optimize-pcb-design)
Coupler-Specific Analysis Functions
These functions are available on 4-port coupler objects: couplerBranchline, couplerBranchlineWideband, couplerRatrace, couplerDirectional.
| Function | What It Measures | Signature |
|---|---|---|
| coupling(obj, freq) | Coupling factor (dB) — power transferred to coupled port | Plots by default; cVal = coupling(obj, freq) returns values |
| directivity(obj, freq) | Directivity (dB) — separation of forward vs. backward coupled power | Plots by default; dVal = directivity(obj, freq) returns values |
| isolation(obj, freq) | Isolation (dB) — power leakage to the isolated port | Plots by default; iVal = isolation(obj, freq) returns values |
c = design(couplerBranchline, 2.4e9);
freq = linspace(2e9, 3e9, 101);
coupling(c, freq); % plots coupling factor
cVal = coupling(c, freq); % returns numeric values (dB)
directivity(c, freq); % plots directivity
dVal = directivity(c, freq); % returns numeric values (dB)
isolation(c, freq); % plots isolation
iVal = isolation(c, freq); % returns numeric values (dB)
Port Numbering Convention
3-Port (Splitters)
| Port | Function | |------|----------| | 1 | Input | | 2 | Output (through) | | 3 | Output (split) |
4-Port (Couplers)
| Port | Branchline | Ratrace | |------|-----------|---------| | 1 | Input | Input | | 2 | Through (-3dB, 0°) | Sum | | 3 | Coupled (-3dB, -90°) | Difference | | 4 | Isolated | Through |
Rotman Lens (Beam-Forming Network)
rotmanLens is an N-beam, N-array true-time-delay beam-forming network.
lens = rotmanLens;
lens.NumBeamPorts = 4;
lens.NumArrayPorts = 4;
lens.NumDummyPorts = 4; % Absorb reflected energy at lens edges
lens.BeamPortAngle = 40; % Angular spread of beam ports (degrees)
lens.MaxScanAngle = 30; % Maximum scan angle (degrees)
lens.Height = 5.08e-4;
lens.Conductor = metal("Copper");
show(lens);
layout(lens);
Key properties: OnaxisFocalLength, OffaxisFocalLength (auto-computed from scan angle). BeamTaper and ArrayTaper control the tapered feed line shapes (traceTapered objects).
SIW Power Divider
SIWSplitter is a substrate integrated waveguide 1:2 power divider.
s = SIWSplitter;
s.InputLineLength = 0.0155;
s.SplitLineLength = 0.0145;
s.Width = 0.0125;
s.ViaSpacing = [0.0017, 0.011]; % [wall via spacing, split via spacing]
s.ViaDiameter = 5e-4;
s.PostDiameter = 2.54e-4;
s.PostOffsetX = 5.5e-3;
s.Height
Truncated for display — read the full file on GitHub.
Related Skills
siyuan
46.6kAn open-source, privacy-first, self-hosted knowledge workspace where humans and AI agents work together 开源、隐私优先、自托管的知识工作空间,让人与智能体在此协作
algorithmic-art
177.9kCreating algorithmic art using p5.js with seeded randomness and interactive parameter exploration. Use this when users request creating art using code, generative art, algorithmic art, flow fields, or particle systems.
pptx
177.9kUse this skill any time a .pptx or .potx file is involved in any way — as input, output, or both. This includes: creating slide decks, pitch decks, or presentations; reading, parsing, or extracting text from any .pptx or .potx file (even if the extracted content will be used elsewhere, like in an em…
design
130.2kComprehensive design skill: brand identity, design tokens, UI styling, logo generation (55 styles, Gemini, Atlas Cloud, or MuAPI AI), corporate identity program (50 deliverables, CIP mockups), HTML presentations (Chart.js), banner design (22 styles, social/ads/web/print), icon design (15 styles, SVG…
Languages
Trust signals
From repository metadata: license, adoption, age and documentation. Not a code audit — see the Safety scan above for what the skill file itself contains.
