RF Toolbox and RF Blockset
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.
When to Use
Measured data workflows
- Loading Touchstone files (.s1p through .snp), validating quality (passivity, causality, IEEE P370)
- Plotting on Smith charts and rectangular plots, interpolating, re-referencing impedance
- Converting between S, Z, Y, ABCD, T, H, G parameters; computing mixed-mode differential
- Cascading and de-embedding S-parameter networks; fixture removal
System design and analysis
- Building RF signal chains from behavioral elements (amplifier, modulator, rffilter, nport, etc.)
- Computing cascaded gain, noise figure, IP3, SNR, output power with rfbudget
- Comparing Friis vs Harmonic Balance solver accuracy
- Exporting to RF Blockset Simulink models, Communications Toolbox, or MATLAB scripts
Circuit-level design
- Composing arbitrary RF circuits with node wiring (SPICE-like netlist)
- Designing impedance matching networks (L, Pi, Tee topologies, Richards stubs)
- Analyzing amplifier stability (K-factor, mu), power gain, and matching conditions
- Mixer intermodulation analysis and spur-free IF frequency planning
Time-domain and signal integrity
- Fitting S-parameters to rational models; computing TDR, impulse, step responses
- Exporting broadband circuit models to SPICE or Verilog-A
- Building SI channel models from nport blocks, lossy transmission lines, and parasitics
- Processing complex baseband signals through rf.Amplifier, rf.Mixer, rf.Filter System Objects
- Full Circuit Envelope time-domain simulation via rfsystem (no Simulink knowledge required)
When NOT to Use
- Antenna design and radiation patterns -- use Antenna Toolbox
- RF propagation modeling (path loss, fading, ray tracing) -- use Communications Toolbox or Phased Array System Toolbox
- SerDes/high-speed serial link equalization (FFE, CTLE, DFE, IBIS-AMI) -- use SerDes Toolbox
- Radar waveform design or phased arrays -- use Phased Array System Toolbox
Must-Follow Rules
These apply across ALL RF Toolbox workflows. Violating them produces silent errors or blocks execution.
Universal
rfwriteblocks on existing files -- Always pass'ForceOverwrite', true. Without it, MATLAB opens an interactive overwrite dialog that halts unattended execution.- Elements cannot be reused -- The same element object cannot appear twice in an rfbudget or circuit. Use
clone(element)for independent copies. - Element Name must be a valid MATLAB identifier -- No spaces, no special characters. Use
'IFAmp'not'IF Amp'. - Use
tiledlayout/nexttile-- Notsubplot. For all multi-panel figures. rfparamreturns complex, not dB -- Always use20*log10(abs(rfparam(...)))for dB magnitude.
S-Parameters and Network Parameters
sparameters(filename, Z0)is invalid -- Cannot pass reference impedance at load time. Load first, thennewref(s, Z0).rfinterp1interpolates real/imag independently -- Not magnitude and angle. Can produce artifacts near sharp resonances.- Frequency alignment required for cascade/de-embed --
cascadesparamsanddeembedsparamsrequire identical frequency vectors. Alwaysrfinterp1to a common grid first. deembedsparamsalways requires 3 arguments --(sMeasured, sFixture1, sFixture2). For one-sided, pass an ideal thru for the unused side.- Mixed-mode port ordering is the #1 error source --
s2sddoption 1 (default) treats ports 1,2 as positive and 3,4 as negative. Verify which option matches your VNA port numbering. snp2smpargument order: ports before impedance --snp2smp(s, portList, Z0), notsnp2smp(s, Z0, portList).
rfbudget and Elements
SignalBandwidthis required -- The 4th positional arg torfbudget. Without it, NF/IP3/SNR remain empty.- Passive NF equals loss -- For
rfelement, NF should equalabs(Gain). Preferattenuatorwhich handles this automatically. nportName is positional --nport('file.s2p', 'MyName'), not name-value syntax.- rffilter:
ResponseTypeis shape,FilterTypeis algorithm --rffilter('FilterType', 'Bandpass')errors. Userffilter('ResponseType', 'Bandpass'). show(b)opens a GUI -- Produces no command-window output. Use properties (b.TransducerGain,b.NF) for programmatic access.
Circuit Composition
setports/setterminalscan only be called once -- Plan topology before defining terminals.- 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. - Primitive constructors are positional --
resistor(100, 'R1'), notresistor('Resistance', 100). setterminalstakes a node vector --setterminals(ckt, [1 2]), notsetterminals(ckt, 1, 2).- All txline constructors use name-value pairs only -- No positional arguments.
Amplifier Analysis
powergaingain type string must be last --powergain(s, 50, 50, 'Gt'), notpowergain(s, 'Gt', 50, 50).powergainreturns linear, not dB -- Convert with10*log10(g)(power gain uses 10x, not 20x).Gmagreturns NaN when conditionally stable -- UseGmsgat frequencies where K < 1.
Rational Fitting
rationalvsrationalfit-- Userationalfor new code (AAA). Userationalfitonly for delay extraction.- Single-param fit returns plain vectors; multi-port returns cell arrays -- Always check with
iscell(result). freqresptakes Hz -- Not rad/s. Passs.Frequenciesdirectly.
System Objects (rf.*)
- rf.Amplifier/rf.Mixer use 1-ohm power --
Vin = sqrt(Pin_W). This differs from rfsystem which uses 50-ohm. - rf.Filter frequencies are ABSOLUTE RF --
PassFreq_bp=[2.395e9 2.405e9]means absolute GHz. Not baseband offsets. - Properties locked during use -- Call
release(obj)before modifying Nontunable properties.
rfsystem
- Requires rfbudget --
rfsystemtakes an rfbudget, not raw elements. close_systemneeds save flag -- Useclose_system(rfs, 0)to discard changes.- IdealizedBaseband only supports amplifier/modulator/rffilter/nport -- Other elements require CircuitEnvelope.
Workflow Quick Reference
| 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 |
Conventions
Code Style
- Use
tiledlayout/nexttilefor multi-panel figures (notsubplot) - Always label axes with units (GHz, dB, ns, dBm) and include figure titles
- Name elements descriptively for readable topology (
'LNA','DCBlock','PCBTrace') - Use
clone()liberally for element reuse
Script-First Workflow
For 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.
Modern APIs
tiledlayout/nexttileinstead ofsubplotdatetimeinstead ofdatenumrationalinstead ofrationalfit(unless delay extraction needed)smithplotinstead ofsmithrfplotfor S-parameter visualization (handles dB conversion automatically)
References
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.