matlab-design-pcb-coupler について
この MATLAB スキルは、RF・マイクロ波設計者向けに、複数の分配トポロジーやビーム形成ネットワークを含むパワーデバイダーとカプラーの設計手順を示します。S パラメーター、結合度、方向性、アイソレーションの解析も扱います。
主な機能
- 01Wilkinson 分配器と広帯域型の設計
- 02ブランチライン、ラットレース、方向性カプラーの作成
- 03コーポレート分配器と SIW 分配器の構築
- 04Rotman Lens ビーム形成ネットワークの設定
- 05S パラメーター、結合度、アイソレーションの解析
活用シーン
- 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
詳細
カプラーとスプリッターの設計
使用する場合
- 電力分配用のウィルキンソンスプリッター(等分、不等分、広帯域)を設計する場合
- 直交または和差ネットワーク用のブランチラインカプラーやラットレースカプラーを作成する場合
- アレイ給電ネットワーク用のコーポレート電力分配器を構築する場合
- 信号サンプリング用の方向性カプラーを設計する場合
- ビームフォーミング用のSIWスプリッターやロットマンレンズを作成する場合
使用しない場合
- 伝送線路を設計する場合 —
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 | 標準的な2分配 |
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アレイ | 真の時間遅延を備えたフェーズドアレイ |
ウィルキンソンスプリッター
等分配
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要素ベクトル:各アームに1つ) |
MatchLineLength | 出力整合線の長さ(m) | 0.0277 |
MatchLineWidth | 出力整合線の幅(m) | [0.0039 0.0066](2要素ベクトル:各アームに1つ) |
Resistance | アイソレーション抵抗(オーム) | 106 |
広帯域ウィルキンソン
帯域幅を広げるための多段構成:
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 | 1/4波長変成器の幅(m) | [8.55e-04 0.0014 0.0021](ベクトル、各段に1つ) |
Resistance | アイソレーション抵抗の値(オーム) | [100 183.40 141.42](ベクトル、各段に1つ) |
多層ウィルキンソン
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);
ラットレースカプラー
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。
ラットレース上の電荷と電流
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(ベクトル、セクションごとに 1 つ)、Spacing(ベクトル、セクションごとに 1 つ)、PortLineWidth、GroundPlaneLength。
ティージャンクションとコーポレート分配器
スプリッターティー
単純なリアクティブ 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 プロパティは、マイクロストリップから SIW への遷移を制御する traceTapered オブジェクトです:
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 ポート(カプラー)
| ポート | ブランチライン | ラットレース |
|---|---|---|
| 1 | 入力 | 入力 |
| 2 | スルー(-3dB、0°) | 和 |
| 3 | 結合(-3dB、-90°) | 差 |
| 4 | アイソレート | スルー |
Rotman レンズ(ビームフォーミングネットワーク)
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を参照してください。 -
ウィルキンソンの抵抗値:アイソレーション抵抗の既定値は 100 ohm(2×Z0)です。50 ohm 以外のシステムでは、それに応じて
Resistanceプロパティを調整してください。 -
ポート番号は種類によって異なる:カプラーの種類ごとにポートの番号付けが異なります。S パラメーターを解釈する前に、必ず
show(obj)で各ポートの位置を確認してください。 -
広帯域カプラーのセクション:セクションを増やすと帯域幅が広がりますが、サイズも大きくなります。各セクションは、中心周波数における約 4 分の 1 波長分の長さを追加します。
-
コーポレート分配器の対称性:
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 はリアクティブ:ウィルキンソンとは異なり、T 字分岐はリアクティブ(無損失)に分配するため、出力ポート同士はアイソレーションされません。アイソレーションが必要な場合は、ウィルキンソンを使用してください。
-
couplerDirectional では
design()を使用できない:couplerDirectionalはdesign()をサポートしていません。Length、Width、Spacing、NumSectionsを手動で設定してください。 -
couplerDirectional のマルチセクション寸法:
NumSections > 1の場合、WidthとSpacingは各セクションに 1 つずつ要素を持つベクトルにする必要があります。Lengthはスカラーのままです。また、構造が長くなるためGroundPlaneLengthも大きくしてください。既定値は 1 セクション分しかありません。 -
カプラーとスタブ/共振器のカスケード接続:スタブまたは共振器をカプラーポートに物理的に接続するには、
pcbcascade(pcbComponent(coupler), pcbComponent(stub), portA, portB)を使用してください。2 つのオブジェクトで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';pcbComponent()に名前と値の引数としてSolverTypeを渡さないでください。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.