High-Frequency Noise Filtering
Digital filtering removes out-of-band pickup and electromagnetic noise from each channel while preserving the fast physics the control loop needs.
Noise in a high-field machine
The electromagnetic environment of a 16.84 T machine carrying 9.66 MA is hostile. Switching transients, the ICE-PISTON preload cycle, and coupling between the megampere plasma current and low-level diagnostics all inject noise. Analog rejection at the front end handles most common-mode pickup; digital filtering after sampling removes what remains without discarding real signal.
Filter design against physics bandwidth
Each channel has a known physics bandwidth. The filter is designed to pass that band and reject above it: a linear-phase FIR where group-delay flatness matters (magnetics used for phase-sensitive mode analysis), an IIR where latency must be minimal. Cutoffs are stored with the channel so any later analysis knows the exact band retained.
import numpy as np
# simple linear-phase FIR low-pass (windowed sinc)
def fir_lowpass(fc, fs, ntaps=129):
n = np.arange(ntaps) - (ntaps-1)/2
h = np.sinc(2*fc/fs * n) * np.hamming(ntaps)
return h / h.sum()
# preserve 500 kHz Mirnov content at 2 MHz sampling
h = fir_lowpass(500e3, 2e6)
What filtering must not do
- It must not remove a real precursor: filters are set from physics, not from a desire for smooth traces.
- It must not distort phase where phase carries information (Mirnov mode rotation, ECE localization).
- It must not hide a dead sensor: silence is a validation event, not a signal to be smoothed away.
Coupled to validation
Filtering is one stage of validation. A channel that needs aggressive filtering to look sane is flagged for drift or fault; the data-quality score reflects the filtering effort applied. Both machines share the filtering framework, tuned per diagnostic and per machine bandwidth.