matlab/matlab-model-rf
> RF Toolbox and RF Blockset in MATLAB -- S-parameter I/O, network conversions (S/Z/Y/ABCD/T/H/G, mixed-mode), cascade/de-embedding, rfbudget analysis, circuit composition, matching networks, amplifier stability, mixer spurs, rational fitting, SI channels, baseband processing, Circuit rfwrite, zparameters, yparameters, abcdparameters, s2sdd, cascadesparams, deembedsparams, rfbudget, noise figure, OIP3, IIP3, amplifier, modulator, nport, rffilter, attenuator, seriesRLC, shuntRLC, lcladder, txline, circuit, setports, clone, matchingnetwork, stabilityk, stabilitymu, powergain, gammams, gammaml, mixerIMT, OpenIF, rational, rationalfit, stepresp, txlineWRLGC, rf.Amplifier, rf.Mixer, rf.Filter, rf.Sparameter, rfsystem, RF Blockset.
npx skills add https://github.com/matlab/matlab-agentic-toolkit --skill matlab-model-rf
Design, analyze, and simulate RF systems in MATLAB -- from measured S-parameter data through
full time-domain Circuit Envelope simulation. One unified workflow covering passive networks,
active device characterization, system cascade budgets, and behavioral time-domain modeling.
Measured data workflows
System design and analysis
Circuit-level design
Time-domain and signal integrity
These apply across ALL RF Toolbox workflows. Violating them produces silent errors or blocks execution.
rfwrite blocks on existing files -- Always pass 'ForceOverwrite', true. Without it, MATLAB opens an interactive overwrite dialog that halts unattended execution.clone(element) for independent copies.'IFAmp' not 'IF Amp'.tiledlayout/nexttile -- Not subplot. For all multi-panel figures.rfparam returns complex, not dB -- Always use 20*log10(abs(rfparam(...))) for dB magnitude.sparameters(filename, Z0) is invalid -- Cannot pass reference impedance at load time. Load first, then newref(s, Z0).rfinterp1 interpolates real/imag independently -- Not magnitude and angle. Can produce artifacts near sharp resonances.cascadesparams and deembedsparams require identical frequency vectors. Always rfinterp1 to a common grid first.deembedsparams always requires 3 arguments -- (sMeasured, sFixture1, sFixture2). For one-sided, pass an ideal thru for the unused side.10. Mixed-mode port ordering is the #1 error source -- s2sdd option 1 (default) treats ports 1,2 as positive and 3,4 as negative. Verify which option matches your VNA port numbering.
11. snp2smp argument order: ports before impedance -- snp2smp(s, portList, Z0), not snp2smp(s, Z0, portList).
12. SignalBandwidth is required -- The 4th positional arg to rfbudget. Without it, NF/IP3/SNR remain empty.
13. Passive NF equals loss -- For rfelement, NF should equal abs(Gain). Prefer attenuator which handles this automatically.
14. nport Name is positional -- nport('file.s2p', 'MyName'), not name-value syntax.
15. rffilter: ResponseType is shape, FilterType is algorithm -- rffilter('FilterType', 'Bandpass') errors. Use rffilter('ResponseType', 'Bandpass').
16. show(b) opens a GUI -- Produces no command-window output. Use properties (b.TransducerGain, b.NF) for programmatic access.
17. setports/setterminals can only be called once -- Plan topology before defining terminals.
18. 2-port RF elements use 4-node mapping -- add(ckt, [in out inRef outRef], elem) for amplifier, modulator, nport, all txline types. Primitive 2-terminal elements (resistor, capacitor, inductor) use 2-node mapping.
19. Primitive constructors are positional -- resistor(100, 'R1'), not resistor('Resistance', 100).
20. setterminals takes a node vector -- setterminals(ckt, [1 2]), not setterminals(ckt, 1, 2).
21. All txline constructors use name-value pairs only -- No positional arguments.
22. powergain gain type string must be last -- powergain(s, 50, 50, 'Gt'), not powergain(s, 'Gt', 50, 50).
23. powergain returns linear, not dB -- Convert with 10*log10(g) (power gain uses 10x, not 20x).
24. Gmag returns NaN when conditionally stable -- Use Gmsg at frequencies where K < 1.
25. rational vs rationalfit -- Use rational for new code (AAA). Use rationalfit only for delay extraction.
26. Single-param fit returns plain vectors; multi-port returns cell arrays -- Always check with iscell(result).
27. freqresp takes Hz -- Not rad/s. Pass s.Frequencies directly.
28. rf.Amplifier/rf.Mixer use 1-ohm power -- Vin = sqrt(Pin_W). This differs from rfsystem which uses 50-ohm.
29. rf.Filter frequencies are ABSOLUTE RF -- PassFreq_bp=[2.395e9 2.405e9] means absolute GHz. Not baseband offsets.
30. Properties locked during use -- Call release(obj) before modifying Nontunable properties.
31. Requires rfbudget -- rfsystem takes an rfbudget, not raw elements.
32. close_system needs save flag -- Use close_system(rfs, 0) to discard changes.
33. IdealizedBaseband only supports amplifier/modulator/rffilter/nport -- Other elements require CircuitEnvelope.
| Task | Entry Point | Details |
|------|-------------|---------|
| Load/plot S-parameters | sparameters, rfplot, smithplot | reference/sparameters-io.md |
| Convert S/Z/Y/ABCD, mixed-mode | zparameters, s2sdd, snp2smp | reference/network-conversions.md |
| Cascade or de-embed networks | cascadesparams, deembedsparams | reference/cascade-deembed.md |
| Create rfbudget elements | amplifier, modulator, rffilter, etc. | reference/rfbudget-elements.md |
| Run cascade budget analysis | rfbudget, rfplot(b, 'Pout') | reference/rfbudget-analysis.md |
| Compose RF circuits | circuit, add, setports | reference/circuit-composition.md |
| Design matching networks | matchingnetwork, richards | reference/matching-networks.md |
| Analyze amplifier stability/gain | stabilityk, powergain, gammams | reference/amplifier-analysis.md |
| Mixer spurs and IF planning | mixerIMT, OpenIF | reference/mixer-analysis.md |
| Fit rational models, TDR | rational, stepresp, generateSPICE | reference/rational-fitting.md |
| Build SI channel models | nport + txlineWRLGC + circuit | reference/si-channel-modeling.md |
| Process complex baseband | rf.Amplifier, rf.Mixer, rf.Filter | reference/baseband-processing.md |
| Time-domain system simulation | rfsystem, Circuit Envelope | reference/system-simulation.md |
tiledlayout/nexttile for multi-panel figures (not subplot)'LNA', 'DCBlock', 'PCBTrace')clone() liberally for element reuseFor design, analysis, or sweep tasks -- write code to .m files on disk, not inline snippets. For quick one-off checks, inline evaluate_matlab_code is fine.
tiledlayout/nexttile instead of subplotdatetime instead of datenumrational instead of rationalfit (unless delay extraction needed)smithplot instead of smithrfplot for S-parameter visualization (handles dB conversion automatically)Load the relevant reference file before writing code for a specific workflow. Each reference contains correct calling conventions, constructor arguments, property names, gotchas, and executable code patterns.
----
Copyright 2026 The MathWorks, Inc.
----
Take matlab/matlab-model-rf from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.