matlab-design-pcb-filter について
PCB 設計向けに、バンドパス、ローパス、バンドストップ、SIW などの RF フィルターを設計する MATLAB スキルです。S パラメータ測定値からの結合行列抽出や、シミュレーション前の確認事項も扱います。
主な機能
- 01複数のバンドパスフィルター構造の設計
- 02ローパス、バンドストップ、ノッチの設計
- 03S パラメータからの結合行列抽出
- 04帯域幅、選択度、サイズに応じた構造選択
- 05メッシュ密度の確認と S パラメータ計算
活用シーン
- 01目標周波数に合わせた PCB フィルター設計
- 02測定データを用いたフィルターモデルの解析
- 03応答の比較と形状の調整
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ matlab/ matlab-agentic-toolkit --skill matlab-design-pcb-filterインストール後、Claude Code で/matlab-design-pcb-filterを入力して読み込まれたか確認します。
同梱ファイルmanifest.yaml
詳細
RF フィルターの設計
使用する場面
- バンドパスフィルター(結合線路、ヘアピン、オープンループ、コムライン、インターデジタル、SIW)を設計する
- ローパスフィルター(段階インピーダンス)を設計する
- バンドストップフィルターまたはノッチフィルター(スパーライン、スタブベース)を設計する
- 測定した S パラメーターのデータから結合行列を抽出する(measuredFilter)
- 帯域幅、選択度、サイズの要件に応じてフィルターのトポロジーを選択する
使用しない場面
- インピーダンス制御用の伝送線路を設計する —
matlab-design-pcb-transmission-lineを使用してください - カプラーまたはスプリッターを設計する —
matlab-design-pcb-couplerを使用してください - 受動部品(インダクター、コンデンサー、バラン)を設計する —
matlab-design-pcb-passiveを使用してください - 基板または導体の材料を設定する —
matlab-manage-pcb-materialを使用してください - 設計後にフィルターの寸法を最適化する —
matlab-optimize-pcb-designを使用してください
一般的なワークフロー
- 事前:
matlab-manage-pcb-material— 基板と導体を設定します - このスキル: フィルターを設計します(カタログオブジェクトまたはカスタム形状)
- メッシュ/メモリの確認:
memoryEstimate(obj, fc, 'RetainMesh', true)— 完全解析を実行する前に、自動メッシュの密度を確認します - 事後:
matlab-analyze-em— S パラメーターを検証します →matlab-optimize-pcb-design— 寸法を調整します →matlab-write-pcb-layout— Gerber をエクスポートします
クイックリファレンス — フィルターの選択
| フィルターオブジェクト | 種類 | 極数 | 最適な用途 |
|---|---|---|---|
filterCoupledLine | バンドパス | 2–8 | 一般的なマイクロストリップ BPF |
filterHairpin | バンドパス | 2–8 | コンパクトな BPF、折り返し共振器 |
filterOpenLoop | バンドパス | 4/6/8 | コンパクトな準楕円特性 |
filterCombline | バンドパス | 2–6 | 狭帯域、高 Q |
filterInterdigital | バンドパス | 2–8 | 広帯域、良好な阻止帯域 |
filterStepImpedanceLowPass | ローパス | 3–9 | 分布定数型 LPF |
filterStub | LP/HP/BS | N スタブ | 柔軟なスタブトポロジー |
filterSpurline | バンドストップ | 1–2 | コンパクトなノッチフィルター |
SIWFilter | バンドパス | 2–6 | 高 Q の基板内導波管 |
measuredFilter | バンドパス | N | 測定値からのモデル抽出 |
バンドパスフィルター
結合線路フィルター
f = filterCoupledLine;
f = design(filterCoupledLine, 3e9); % Design at 3 GHz
show(f);
sp = sparameters(f, linspace(1e9, 5e9, 101), 'SweepOption', 'interp');
rfplot(sp);
主なプロパティ:FilterOrder、CoupledLineLength、CoupledLineWidth、CoupledLineSpacing、PortLineLength、PortLineWidth。
ヘアピンフィルター
コンパクト化のための、折り返し結合線路共振器です。
f = design(filterHairpin, 3e9);
show(f);
memoryEstimate(f, 3e9, 'RetainMesh', true); % Check mesh density before solving
sp = sparameters(f, linspace(1e9, 5e9, 101), 'SweepOption', 'interp');
rfplot(sp);
主なプロパティ:FilterOrder、CoupledLineLength、CoupledLineWidth、CoupledLineSpacing、PortLineLength、PortLineWidth、Spacing、ResonatorOffset、FeedOffset。
チェビシェフ応答
design() に FilterType と RippleFactor を渡すと、等リップル通過帯域応答を得られます。
f = design(filterHairpin, 1.8e9, FBW=10, FilterType='Chebyshev', RippleFactor=0.5);
FilterType の選択肢:'Butterworth'(デフォルト)、'Chebyshev'。FBW は比帯域幅(%)を設定します。RippleFactor は通過帯域のリップルを dB 単位で設定します(デフォルトは 0.5)。これはチェビシェフの場合にのみ適用されます。
5 次ヘアピンフィルター
f = filterHairpin;
f.FilterOrder = 5;
f = design(f, 2.4e9);
show(f);
オープンループフィルター
クロスカップリングによる準楕円応答です。
f = filterOpenLoop;
f.NumPoles = 6;
f.FeedOffset = 0.5e-3;
show(f);
sp = sparameters(f, linspace(1e9, 5e9, 101), 'SweepOption', 'interp');
rfplot(sp);
主なプロパティ: NumPoles(4/6/8)、ResonatorLength、ResonatorWidth、SplitGap、GapHorizontal、GapVertical、FeedOffset、CoupledResonatorGap、QuadrupletGap、QuadrupletOffset。
コムラインフィルター
短絡共振器を使用し、狭帯域に適しています。注: filterCombline には design 関数がありません。プロパティを手動で設定してください。
f = filterCombline;
f.FilterOrder = 3;
f.Height = 1.6e-3;
show(f);
主なプロパティ: FilterOrder、ResonatorLength(スカラーまたはベクトル)、ResonatorWidth、ResonatorSpacing(スカラーまたはベクトル)、ResonatorOffset、FeedOffset、Capacitor(負荷容量。コムラインに固有)。
インターデジタルフィルター
短絡共振器を交互に配置し、広帯域に対応します。注: filterInterdigital には design 関数がありません。プロパティを手動で設定してください。
f = filterInterdigital;
f.FilterOrder = 4;
f.Height = 1.6e-3;
show(f);
sp = sparameters(f, linspace(3e9, 7e9, 101), 'SweepOption', 'interp');
rfplot(sp);
主なプロパティ: FilterOrder、ResonatorLength(スカラーまたはベクトル)、ResonatorWidth(スカラーまたはベクトル)、ResonatorSpacing(スカラーまたはベクトル)、ResonatorOffset、ViaDiameter(スカラーまたはベクトル。インターデジタルに固有)、FeedOffset、IsShielded、Connector。
ローパスフィルター
ステップインピーダンス型ローパスフィルター
f = filterStepImpedanceLowPass;
f = design(filterStepImpedanceLowPass, 2.5e9);
show(f);
sp = sparameters(f, linspace(0.1e9, 5e9, 101), 'SweepOption', 'interp');
rfplot(sp);
主なプロパティ:FilterOrder、HighZLineWidth、LowZLineWidth、HighZLineLength、LowZLineLength。
バンドストップ/ノッチフィルター
スパーラインフィルター
片側に結合線路セクションを使った、コンパクトなノッチフィルターです。
f = filterSpurline;
show(f);
sp = sparameters(f, linspace(1e9, 6e9, 51), 'SweepOption', 'interp');
rfplot(sp);
より深い減衰を実現するダブルスパーラインです。
f = filterSpurline;
f.LineType = 'Double';
show(f);
主なプロパティ: LineType('Single'/'Double')、CoupledLineLength、CoupledLineWidth、CoupledLineSpacing、LineGap(結合線路と出力線路の間隔。スパーライン特有のプロパティ)、IsShielded、Connector。
スタブフィルター(オープン/ショート)
filterStub オブジェクトは、開放端スタブ(バンドストップ)と短絡端スタブ(ハイパス)に対応しています。
f = filterStub;
f.StubLength = [6e-3 6e-3 6e-3];
f.StubWidth = [0.5e-3 0.5e-3 0.5e-3];
f.StubOffsetX = [-6e-3 0 6e-3];
f.StubShort = [0 0 0]; % 0=open (bandstop), 1=short (highpass)
f.StubDirection = [0 0 0]; % 0=below, 1=above trace
f.SeriesLineWidth = 1.8e-3;
f.SeriesLineLength = 12e-3;
show(f);
主なプロパティ: StubLength(ベクトル)、StubWidth(ベクトル)、StubFeedOffsetX(ベクトル)、StubShort(0=オープン、1=ショート。ベクトル)、StubDirection(0=下向き、1=上向き。ベクトル)、SeriesLineLength、SeriesLineWidth、IsShielded、Connector。
ラジアルスタブ
rs = stubRadialShunt;
rs = design(stubRadialShunt, 5e9);
show(rs);
SIW バンドパスフィルター
SIWFilter では FilterOrder ではなく NumResonators を使用します。また、Substrate は読み取り専用であり、内部の共振器オブジェクトを通じて設定します。
f = SIWFilter;
f.NumResonators = 4;
show(f);
sp = sparameters(f, linspace(8e9, 14e9, 51), 'SweepOption', 'interp');
rfplot(sp);
測定フィルターの抽出
measuredFilter は、測定またはシミュレーションによる 2 ポート S パラメーターデータから、結合共振器回路モデル(結合行列、外部 Q、無負荷 Q)を抽出します。これにより、フィルターの調整や診断、理想的な合成目標との比較が可能になります。
主なプロパティ:
Sparameters— 2 ポート S パラメーターデータ(sparametersオブジェクト)FilterOrder— モデル内の共振器数CenterFrequency— 通過帯域の中心周波数(Hz)BandWidth— 3 dB 帯域幅(Hz)CouplingMatrix— 抽出された N+2 結合行列(抽出後に設定)QualityFactor— 無負荷品質係数(qualityfactor()の実行後に設定)
主なメソッド:
residue(mf)— S パラメーターデータからローパスアドミタンスの留数と極を抽出しますtransversalMat(mf)— 留数から横型結合行列を計算しますcanonicalCouplingMat(mf)— 横型行列を正準形(折り返し形)に回転しますoptimize(mf)— 結合行列の等スペクトル最適化を行いますsparameters(mf, freq)— 抽出された回路モデルから S パラメーターを合成しますqualityfactor(mf)— 無負荷品質係数を計算します
ワークフロー全体
% Step 1: Load measured S-parameters and inspect visually
S_meas = sparameters('measured_filter.s2p');
rfplot(S_meas);
% Identify center frequency and bandwidth from the plot
% Step 2: Create measuredFilter with matching initial guess
mf = measuredFilter(Sparameters=S_meas, ...
FilterOrder=8, ...
CenterFrequency=2114.6e6, ...
BandWidth=9.6e6);
% Step 3: Extract residues and poles
residue(mf);
% Step 4: Build transversal matrix, then rotate to canonical form
transversalMat(mf);
M = canonicalCouplingMat(mf);
disp(mf.CouplingMatrix);
% Step 5: Optimize coupling matrix (isospectral flow)
mf = optimize(mf);
% Step 6: Compare extracted model vs measured data
freq = linspace(2.08e9, 2.15e9, 501);
S_model = sparameters(mf, freq);
rfplot(S_meas); hold on;
rfplot(S_model, '--');
legend('Measured', 'Extracted Model');
% Step 7: Quality factor
Q = qualityfactor(mf);
disp(mf.QualityFactor);
カスタムフィルターの組み立て
カタログにないトポロジーは、pcbComponent を使って構築します。
% Example: custom 2-pole open-loop filter from shape primitives
sub = dielectric("FR4");
sub.Thickness = 1.6e-3;
cond = metal("Copper");
% Build resonator shapes using traceLine, traceRectangular, Boolean ops
% (see matlab-assemble-pcb-layout skill)
pcb = pcbComponent;
pcb.Layers = {filterShape, sub, groundPlane};
pcb.BoardShape = groundPlane;
pcb.BoardThickness = sub.Thickness;
pcb.Conductor = cond;
pcb.FeedDiameter = feedWidth/2;
pcb.FeedLocations = [x1 y1 1 3; x2 y2 1 3];
多層フィルター
すべてのフィルターカタログオブジェクトは、多層誘電体に対応しています。
f = design(filterCoupledLine, 3e9);
sub = dielectric("FR4", "Teflon");
sub.Thickness = [0.8e-3 0.4e-3]; % Set Thickness BEFORE assigning to filter
f.Substrate = sub;
f.Height = 1.2e-3;
show(f);
フィルター選択ガイド
| 用途 | 推奨フィルター | 備考 |
|---|---|---|
| コンパクトなバンドパス | filterHairpin | 共振器を折り曲げて基板面積を節約します |
| 標準的なバンドパス | filterCoupledLine | design() に対応し、最初に試すのに最適です |
| 高選択度のバンドパス | filterInterdigital | 良好な阻止帯域減衰を持ち、広帯域に対応します |
| 容量装荷型バンドパス | filterCombline | 狭帯域、高 Q、短い共振器です |
| 交差結合/伝送零点を持つバンドパス | filterOpenLoop | 準楕円型で、伝送零点を持ちます。design() に対応します |
| SIW 技術によるバンドパス | SIWFilter | 基板内導波管による高 Q フィルターです |
| ステップインピーダンス型ローパス | filterStepImpedanceLowPass | design() に対応します |
| ノッチ型バンドストップ | filterSpurline | 非常にコンパクトで、シングルまたはダブルに対応します |
| スタブ型バンドパス/バンドストップ | filterStub | オープン/ショートのスタブトポロジーに柔軟に対応します。design() には非対応です |
| データからのモデル抽出 | measuredFilter | 測定データから結合行列を抽出します |
設計の調整
| 問題 | 調整項目 | 方向 |
|---|---|---|
| 通過帯域が広すぎる | FilterOrder、Spacing | 次数を上げ、間隔を狭めます |
| 挿入損失が大きすぎる | Conductor の厚さ | 実際の金属を使用し、厚さを増やします |
| 減衰が不十分 | FilterOrder | 増やします |
| 中心周波数がずれている | design(filt, freq) を再実行 | -- |
| リターンロスが悪い | FeedOffset、FeedType | 給電位置を調整します |
落とし穴
-
S パラメーターには補間スイープを使用する:MoM ソルブでは、必ず
sparameters(obj, freq, 'SweepOption', 'interp')を使用してください。直接スイープでは各周波数点を個別に計算するため、大幅に時間がかかります。 -
計算前にメッシュ密度を確認する:カタログフィルターでは、実行時間の大半を占める高密度の自動メッシュが生成されます。
sparameters()を実行する前に、必ずmemoryEstimate(obj, fc, 'RetainMesh', true)を実行してください。メモリー使用量が過剰な場合は、mesh(obj, 'MaxEdgeLength', lambda/6)でメッシュを粗くします。メッシュを詳細に検査するワークフローについては、matlab-analyze-emを参照してください。 -
FilterOrder と NumPoles:オブジェクトによって、
FilterOrderを使用するものとNumPolesを使用するものがあります。対象のオブジェクトのプロパティを確認してください。 -
PortLineLength は応答に影響する:ポートの給電線長は位相に影響し、フィルターの見かけ上の中心周波数をずらすことがあります。適切に励振するために、十分な長さを確保してください。
-
design() はすべての寸法を設定する:
design(obj, fc)を実行すると、すべての幾何パラメーターが上書きされます。プロパティをカスタマイズする場合は、designを実行してから設定してください。 -
結合線路フィルターの帯域幅:帯域幅は
CouplingSpacingによって制御されます。間隔が狭いほど結合が強くなり、帯域幅が広くなりますが、製造上の制限があります。 -
StubShort の規則:
filterStubでは、StubShort=0は開放端スタブ(帯域阻止フィルターを生成)、StubShort=1は短絡スタブ(ハイパスフィルターを生成)を意味します。直感に反する設定です。 -
combline/interdigital/stub では design() を使用できない:
filterCombline、filterInterdigital、filterStubはdesign()をサポートしていません。共振器理論に基づいて、寸法を手動で設定してください。 -
SIWFilter の Substrate は読み取り専用:
SIWFilter.Substrateを直接設定することはできません。基板は、内部の共振器および伝送線路の要素オブジェクトを通じて制御します。 -
measuredFilter では初期推定値が重要です。
CenterFrequencyとBandWidthは、測定データの実際の通過帯域に近い値である必要があります。初期値が不適切だと、residue()が誤った極を抽出します。最初に S パラメーターデータを目視で確認してください。 -
ResonatorSpacing ベクトルの長さ = FilterOrder - 1:コムライン、インターデジタル、ヘアピンフィルターでは、
ResonatorSpacingは共振器 間 の間隔を指定します。N 次フィルターには N 個の共振器がありますが、間隔は N-1 個です。N 個の要素を渡さないでください。N-1 個を渡してください。 -
GroundPlaneLength はほとんどのフィルターで読み取り専用:
filterCombline、filterHairpin、filterInterdigitalでは、GroundPlaneLengthとGroundPlaneWidthは共振器の寸法から自動計算されます。これらを設定しようとしないでください。
関連スキル
matlab-manage-pcb-material— フィルター性能に応じた基板の選択matlab-analyze-em— S パラメーターの抽出と電界の可視化matlab-optimize-pcb-design— フィルター寸法の最適化matlab-assemble-pcb-layout— pcbComponent によるカスタムフィルタートポロジーmatlab-design-pcb-passive— フィルター向けの共振器、バラン、スプリットリング構造
Copyright 2026 The MathWorks, Inc.