S-parameter units — linear, dB, and phase¶
S-parameters are complex. How you plot them is a display choice; the arithmetic is not.
Complex linear¶
The native quantity is a complex ratio S = re + j·im, equivalently magnitude |S| and phase arg(S). Mixed-mode conversion, cascading, and de-embedding all require this form.
Magnitude in dB¶
Power-wave S-parameters use 20 log10, not 10 log10:
S_dB = 20 * log10(|S|)
| Linear magnitude | dB |
|---|---|
| 1.0 | 0 dB (pass-through) |
| 0.707 | ≈ −3 dB |
| 0.1 | −20 dB |
| 0.01 | −40 dB |
Insertion loss is often quoted as a positive number: “3 dB of loss” means S21 ≈ −3 dB. Do not mix the two in a formula. When these docs write S21_dB they mean 20*log10(|S21|), which is usually negative for a passive cable.
Phase¶
Phase is in degrees in Touchstone MA/DB formats and in radians in most numpy/cmath calls.
Two similar cables can look like outliers in phase even when their dB magnitude overlays. Wrapped phase has 360° jumps. Unwrap before you difference two traces, or before you correlate phase. CloudSprite’s QC default correlates dB magnitude, not phase.
Which unit for which job¶
| Job | Use |
|---|---|
| Mixed-mode conversion | Complex linear, then dB at the end |
| Waveform correlation QC on S-parameters | dB magnitude (20*log10(\|S\|)) so shape is in the unit you inspect |
| Return-loss plots | dB |
| Cascading / T-parameters | Complex linear |
Never add, subtract, or average traces that are already in dB and expect a physically mixed-mode result. Averaging in dB is a different (log-magnitude) statistic — valid only when you intend that statistic.
Correlation and dB¶
Pairwise Pearson correlation for S-parameter QC is computed on the dB traces, not on linear |S|. Linear magnitude compresses the stopband and over-weights the passband peak. Convert first, then align x, then correlate. See Correlation QC methodology.