关于 matlab-design-pcb-coupler
该 MATLAB 技能为 RF 与微波设计者提供功分器和耦合器的建模流程,涵盖多种分配拓扑及波束形成网络。还介绍 S 参数、耦合度、方向性和隔离度分析。
主要功能
- 01设计 Wilkinson 功分器及宽带变体
- 02创建支线、环形和定向耦合器
- 03构建企业式功分器与 SIW 分路器
- 04设置 Rotman Lens 波束形成网络
- 05分析 S 参数、耦合度和隔离度
适用场景
- 01设计阵列馈电用的 N 路功率分配器
- 02构建用于正交合成的 90° 混合器
- 03评估耦合器的耦合度、方向性和隔离度
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ matlab/ matlab-agentic-toolkit --skill matlab-design-pcb-coupler安装后在 Claude Code 中输入/matlab-design-pcb-coupler确认已加载。
附带文件manifest.yaml
详细介绍
设计耦合器和分路器
适用场景
- 设计 Wilkinson 分路器(等功分、不等功分、宽带),用于功率分配
- 创建支线耦合器或环形耦合器,用于正交或和差网络
- 构建企业式功率分配器,用于阵列馈电网络
- 设计定向耦合器,用于信号取样
- 创建 SIW 分路器或 Rotman 透镜,用于波束成形
不适用场景
- 设计传输线——使用
matlab-design-pcb-transmission-line - 设计滤波器——使用
matlab-design-pcb-filter - 设计无源元件(电感、电容、巴伦)——使用
matlab-design-pcb-passive - 将耦合器与其他元件级联——使用
matlab-integrate-pcb-circuit - 优化耦合器性能——使用
matlab-optimize-pcb-design
典型工作流
- 之前:
matlab-manage-pcb-material——设置基板和导体 - **本技能:**设计耦合器或分路器
- 检查网格/内存:
memoryEstimate(obj, fc, 'RetainMesh', true)——在进行完整求解前检查自动网格密度 - 之后:
matlab-analyze-em——验证 S 参数 →matlab-optimize-pcb-design——调整尺寸 →matlab-integrate-pcb-circuit——级联到更大的网络中
快速参考——元件选择
| 对象 | 类型 | 端口数 | 最适用途 |
|---|---|---|---|
wilkinsonSplitter | 等功分配器 | 3 | 标准二路等功分 |
wilkinsonSplitterUnequal | 不等功分配器 | 3 | 非对称功率分配 |
wilkinsonSplitterWideband | 宽带等功分配器 | 3 | 多倍频程等功分 |
couplerBranchline | 90° 混合耦合器 | 4 | 正交合成/分配 |
couplerBranchlineWideband | 宽带 90° 混合耦合器 | 4 | 多节宽带正交网络 |
couplerRatrace | 180° 混合耦合器 | 4 | 和差网络 |
couplerDirectional | 定向耦合器 | 4 | 取样、多节对称结构 |
splitterTee | T 形结 | 3 | 简单的电抗性分路 |
powerDividerCorporate | N 路企业式分配器 | N+1 | 阵列馈电网络 |
SIWSplitter | SIW 功率分配器 | 3 | 高频波导分路 |
rotmanLens | 波束成形网络 | N 个波束 + N 个阵元 | 真时延相控阵 |
Wilkinson 分路器
等功分
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);
关键属性:SplitLineLength、SplitLineWidth、Resistance、PortLineLength、PortLineWidth、GroundPlaneWidth。
不等功分
ws = wilkinsonSplitterUnequal;
ws = design(ws, 3e9);
show(ws);
功率分配比由阻抗变换臂控制。
属性参考(2 元素向量属性):
| 属性 | 说明 | 默认值 |
|---|---|---|
SplitLineLength | 分路传输线长度(m) | 0.0279 |
SplitLineWidth | 分路传输线宽度(m) | [0.0014 0.0049](2 元素向量:每个臂对应一个值) |
MatchLineLength | 输出匹配线长度(m) | 0.0277 |
MatchLineWidth | 输出匹配线宽度(m) | [0.0039 0.0066](2 元素向量:每个臂对应一个值) |
Resistance | 隔离电阻(欧姆) | 106 |
宽带 Wilkinson
采用多节结构以扩展带宽:
ws = wilkinsonSplitterWideband;
ws = design(ws, 5e9);
show(ws);
sp = sparameters(ws, linspace(2e9, 8e9, 51), 'SweepOption', 'interp');
rfplot(sp);
属性参考(向量属性会随 NumSections 缩放):
| 属性 | 说明 | 默认值(3 节) |
|---|---|---|
NumSections | 级联节数 | 3 |
Shape | 各节的形状 | "Rectangular"("Circular") |
SplitLineWidth | 四分之一波长变换器的宽度(m) | [8.55e-04 0.0014 0.0021](向量,每节对应一个值) |
Resistance | 隔离电阻值(欧姆) | [100 183.40 141.42](向量,每节对应一个值) |
多层 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);
支线耦合器
标准型(单节)
bl = design(couplerBranchline, 5e9);
show(bl);
freq = linspace(3e9, 7e9, 51);
sp = sparameters(bl, freq, 'SweepOption', 'interp');
rfplot(sp);
关键属性:SeriesArmLength、SeriesArmWidth、ShuntArmLength、ShuntArmWidth、PortLineLength、PortLineWidth。
宽带(多节)
blw = couplerBranchlineWideband;
blw.NumSections = 3;
blw = design(blw, 5e9);
show(blw);
属性参考(矢量属性会随 NumSections 缩放):
| 属性 | 描述 | 默认值(2 节) |
|---|---|---|
NumSections | 支节数量 | 2 |
SeriesArmWidth | 串联臂宽度(m) | 0.0051(标量或矢量) |
ShuntArmWidth | 并联臂宽度(m) | [0.00096 0.0029 0.00096](矢量,包含 NumSections+1 个元素) |
IsShielded | 添加金属屏蔽 | false |
带 DGS 的支线耦合器
添加 DGS 可提高方向性和隔离度:
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);
耦合器的分析方法
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 耦合器
180° 混合耦合器(求和/差分端口):
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);
关键属性:RingRadius、RingWidth、PortLineWidth、PortLineLength。
Ratrace 上的电荷和电流
figure; current(rr, 5e9);
figure; charge(rr, 5e9);
定向耦合器
多节对称定向耦合器。注意:couplerDirectional 没有 design 函数 — 请手动设置属性:
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);
关键属性:NumSections、Length(标量)、Width(矢量,每节一个)、Spacing(矢量,每节一个)、PortLineWidth、GroundPlaneLength。
T 形结与企业馈电分配器
T 形分路器
简单的电抗性 T 形结。Shape 属性控制结点几何形状:
| 形状值 | 描述 |
|---|---|
'RectangularMitered' | 带斜接弯角的矩形(默认) |
'RectangularCurved' | 带曲线弯角的矩形 |
'Circular' | 圆形结点 |
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);
企业式功率分配器(N 路)
用于阵列馈电网络:
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 路企业式功率分配器
cpd = powerDividerCorporate;
cpd.NumOutputPorts = 8;
cpd = design(cpd, 2.4e9);
show(cpd);
SIW 分路器
siw_s = SIWSplitter;
siw_s = design(siw_s, 10e9);
show(siw_s);
FeedLine 属性是一个 traceTapered 对象,用于控制微带线到 SIW 的过渡:
siw_s.FeedLine.InputWidth = 1e-3;
siw_s.FeedLine.OutputWidth = 3e-3;
show(siw_s);
设计工作流
- 选择拓扑:根据需求(等分/不等分、带宽、隔离度)进行选择
- 按中心频率设计:
obj = design(ObjectType, fc) - 可视化:
show(obj) - 分析 S 参数:
sparameters(obj, freq, 'SweepOption', 'interp') - 检查指标:
coupling、directivity、isolation - 自定义:调整属性以适应特定阻抗、基板和尺寸
- 按需优化(参见
matlab-optimize-pcb-design)
耦合器专用分析函数
以下函数适用于 4 端口耦合器对象:couplerBranchline、couplerBranchlineWideband、couplerRatrace、couplerDirectional。
| 函数 | 测量内容 | 签名 |
|---|---|---|
coupling(obj, freq) | 耦合因子(dB)—传输至耦合端口的功率 | 默认绘图;cVal = coupling(obj, freq) 返回数值 |
directivity(obj, freq) | 方向性(dB)—前向与后向耦合功率的分离度 | 默认绘图;dVal = directivity(obj, freq) 返回数值 |
isolation(obj, freq) | 隔离度(dB)—泄漏至隔离端口的功率 | 默认绘图;iVal = isolation(obj, freq) 返回数值 |
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)
端口编号约定
3 端口(分路器)
| 端口 | 功能 |
|---|---|
| 1 | 输入 |
| 2 | 输出(直通) |
| 3 | 输出(分路) |
4 端口(耦合器)
| 端口 | 支线耦合器 | Ratrace |
|---|---|---|
| 1 | 输入 | 输入 |
| 2 | 直通(-3dB,0°) | 求和 |
| 3 | 耦合(-3dB,-90°) | 差分 |
| 4 | 隔离 | 直通 |
Rotman Lens(波束成形网络)
rotmanLens 是一个 N 波束、N 阵列的真时延波束成形网络。
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);
关键属性:OnaxisFocalLength、OffaxisFocalLength(根据扫描角自动计算)。BeamTaper 和 ArrayTaper 控制锥削馈线形状(traceTapered 对象)。
SIW 功率分配器
SIWSplitter 是一种基板集成波导 1:2 功率分配器。
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 = 8e-4;
show(s);
通过 FeedLine 属性自定义馈线:
s.FeedLine = traceRectangular(Length=3e-3, Width=2e-3);
注意事项
-
对 S 参数使用插值扫描:对于 MoM 求解,始终使用
sparameters(obj, freq, 'SweepOption', 'interp')。直接扫描会在每个频率点单独求解,速度明显更慢。 -
求解前检查网格密度:目录耦合器会生成密集的自动网格,这会显著增加运行时间。调用
sparameters()前,始终先运行memoryEstimate(obj, fc, 'RetainMesh', true)。如果内存占用过高,请调粗网格:mesh(obj, 'MaxEdgeLength', lambda/6)。完整的网格检查工作流请参见matlab-analyze-em。 -
Wilkinson 中的电阻:隔离电阻的默认值为 100 ohm(2×Z0)。对于非 50-ohm 系统,请相应调整
Resistance属性。 -
端口编号可能不同:不同类型的耦合器端口编号各不相同。解读 S 参数前,始终先用
show(obj)检查各端口对应的位置。 -
宽带耦合器节段:节段越多,带宽越宽,但尺寸也越大。每个节段在中心频率处约增加四分之一波长。
-
企业式分配器的对称性:
powerDividerCorporate要求NumOutputPorts为 2 的幂(2、4、8、16……)。 -
企业式分配器的基板:
powerDividerCorporate.Substrate为只读属性。请改为设置corp.SplitterElement.Substrate上的基板——企业式分配器由其单元SplitterElement(一个wilkinsonSplitter)构建。注意:design()可能会覆盖基板厚度。 -
企业式分配器的网格很大:多路企业式分配器是体积较大的结构。在高频下,内存需求可能超过数百 GB。如果无法进行全波仿真,请使用行为 S 参数(
'Behavioral', true)快速验证幅度和相位平衡。 -
在 design() 之前设置基板:
design(obj, fc)会根据当前基板自动确定尺寸。在design()之后设置基板只会更改材料,不会重新计算尺寸,导致阻抗不正确。务必先设置Substrate,再调用design()。 -
DGS 耦合:在耦合器中添加 DGS 可将方向性提高 10-15 dB,但会使中心频率略有偏移。添加 DGS 后请重新调谐。
-
SplitterTee 是电抗性的:与 Wilkinson 不同,T 形结是电抗性(无损)分配,输出端口之间没有隔离。需要隔离时请使用 Wilkinson。
-
couplerDirectional 不支持 design():
couplerDirectional不支持design()。请手动设置Length、Width、Spacing和NumSections。 -
couplerDirectional 多节段尺寸:当
NumSections > 1时,Width和Spacing必须是向量,每个节段对应一个元素。Length仍为标量。此外,请增大GroundPlaneLength以容纳更长的结构——默认值仅适用于 1 个节段。 -
通过短截线/谐振器级联耦合器:要将短截线或谐振器物理连接到耦合器端口,请使用
pcbcascade(pcbComponent(coupler), pcbComponent(stub), portA, portB)。确保两个对象的Height、Substrate和Conductor相匹配。已连接的端口会消失——请用show(combined)验证剩余端口数量。级联详情请参见matlab-integrate-pcb-circuit。 -
目录耦合器仅支持 MoM:
couplerBranchline等对象仅原生支持 MoM。若要使用 FEM,请用pcbComponent封装,并在构造后(而非构造时)设置SolverType:bl = design(couplerBranchline, 5e9); pcb = pcbComponent(bl); pcb.SolverType = 'FEM'; s = solver(pcb); s.BoundaryCondition = 'perfectly-matched-layer';请勿将
SolverType作为名称-值参数传递给pcbComponent()。FEM 需要 IDMF 求解器引擎(Windows 上通过 WSL 运行)——如果缺少idmf_hub,请改用 MoM。FEM 的前置条件和故障排除方法请参见matlab-analyze-em。
相关技能
matlab-manage-pcb-material— 基板配置matlab-analyze-em— S 参数和场分析matlab-optimize-pcb-design— 优化耦合器/功分器性能matlab-integrate-pcb-circuit— 将功分器与其他组件组合
Copyright 2026 The MathWorks, Inc.