UWB / SFF Analysis¶
Ultra-Wideband antenna characterization. Gain alone doesn't capture pulse fidelity over wide bandwidths — you also need to know how well the antenna preserves pulse shape across angles.
System Fidelity Factor (SFF)¶
Normalized cross-correlation between the transmitted pulse and the received pulse after the antenna chain:
$$\text{SFF} = \max_\tau \frac{\left|\int s_t(t)\, s_r(t-\tau)\, dt\right|}{\sqrt{\int |s_t|^2 dt \cdot \int |s_r|^2 dt}}$$
Range: 0 to 1. 0.95+ is typically considered "good" for UWB.
What you need¶
- One or more 2-port captures (Touchstone
.s2por S2VNA.csvwithS21(s)) - For per-angle SFF: filenames containing the angle, e.g.
Antenna_45deg.csv
Pulse types supported¶
pulse_type |
Use case |
|---|---|
gaussian_monocycle (default) |
Generic UWB pulse, baseline |
modulated_gaussian |
Carrier-modulated UWB |
5th_derivative_gaussian |
FCC UWB spectral mask compliance |
Programmatic / MCP¶
Full channel analysis (one file)¶
Returns SFF, group delay, transfer function, impulse response, return loss.
SFF vs angle (many files)¶
calculate_sff_from_files(
file_paths=["ant_0deg.csv", "ant_45deg.csv", "ant_90deg.csv", ...],
pulse_type="gaussian_monocycle",
min_freq_ghz=3.1,
max_freq_ghz=10.6,
)
Returns mean SFF plus per-angle SFF with quality labels.
Batch / orchestrator¶
Runs analyze_uwb_channel on every .s2p / matching .csv in the folder. See Recipes.
Frequency-domain transfer function¶
extract_transfer_function returns H(f) magnitude and complex form, plus a flatness_dB metric (peak-to-peak variation in the band).
Impulse response¶
IFFT of the transfer function gives the time-domain impulse response. compute_impulse_response reports:
pulse_width_ps— full-width-half-max of the main loberinging_dB— secondary peaks relative to the main pulse
Common gotchas¶
- Frequency band filter — UWB sweeps are wide. Use
min_freq_ghz/max_freq_ghzto restrict the analysis to your standard's band (3.1–10.6 GHz for FCC UWB). - Group delay column — without
S21(s), RFlect falls back to magnitude-only SFF, which is less informative. Capture group delay if possible. - Angle parsing —
calculate_sff_from_filesextracts angle from filename via regex(\d+)(deg|DEG). If filenames don't follow that pattern, angles default to 0°, 45°, 90°, … by file order.