3. Time-domain signatures of clipping

Clipping in a crash-test data channel is rarely ambiguous once you know what to look for in the time domain. A clipped signal does not simply "look big"; it acquires a specific geometric fingerprint — a flat top (or bottom) where the waveform should have continued to rise or fall, followed by a sharp corner as the signal re-enters its linear range. This chapter treats that fingerprint as a measurable object: we characterize the flat-topping geometry, connect it to the harmonic content it necessarily produces, and then build a practical onset detector from the first derivative and a threshold rule. The goal is a repeatable procedure you can apply to raw channels before any filtering or integration, because clipping is a nonlinear defect that must be identified and quarantined before downstream processing can be trusted.

Why clipping is a time-domain problem first

An accelerometer or load cell channel that saturates at the acquisition system's input range produces a waveform that is mathematically the minimum of the true signal and a constant ceiling (and, symmetrically, a maximum with a floor). In the time domain this appears as a segment where the sample-to-sample difference collapses to approximately zero while the underlying physical event is still evolving. That collapse is the single most diagnostic feature: real mechanical signals in a crash pulse are never perfectly flat for more than a sample or two, because the event is broadband and the sensor is still being driven. A run of identical or near-identical consecutive samples at an extreme value is therefore strong evidence of saturation rather than physics.

Two conventions must be fixed before any measurement, and they must hold for the rest of the analysis. First, define the sign convention of the channel explicitly — for a seat-track accelerometer we will take positive as forward (vehicle longitudinal, +X). Second, define the clipping threshold as the acquisition system's stated full-scale input, not the observed maximum. If the DAQ full-scale is ±500 g and the observed peak is 499.8 g with a flat top, the ceiling is 500 g; the observed maximum is a symptom, not the parameter. Record both, but use the stated full-scale for threshold logic.

Flat-topping geometry and what it tells you

A clipped excursion has three identifiable landmarks: the entry corner where the slope abruptly decreases as the signal reaches the rail, the flat run of near-constant samples, and the exit corner where the signal departs the rail and resumes a physical slope. The duration of the flat run is a lower bound on how long the true signal exceeded full scale — the real excursion was at least this long and probably longer, because the signal had to travel from the rail back into range. This matters for severity assessment: a 2 ms flat top on a 30 ms crash pulse is a brief saturation; a 12 ms flat top means the peak acceleration is substantially underestimated and any injury criterion computed from that channel is invalid.

The corners are also diagnostic of the acquisition chain. A clean, sharp corner suggests hard saturation at the ADC or amplifier rail. A rounded or "soft" corner suggests either analog anti-alias filtering after the saturating stage or a sensor with internal signal conditioning that compresses before it clips. Soft clipping is more dangerous because it is harder to see and produces less obvious flat tops, so the derivative test below is designed to catch both.

Time-domain clipping signature with derivative and threshold onset detection Top panel shows a crash acceleration pulse with a flat-topped clipped excursion at the +500 g rail, marking entry corner, flat run, and exit corner. Bottom panel shows the first derivative collapsing to near zero during the flat run, with a threshold band used to flag clipping onset. Acceleration channel (g) vs. time (ms) — clipped excursion 0 g +500 g full scale entry corner flat run ≈ 8.5 ms exit corner 0 10 20 30 40 First derivative dg/dt (g per sample) — onset flag 0 ±ε threshold band |dg/dt| < ε → clip flag 0 10 20 30 40

Harmonic distortion: the frequency-domain consequence

Flat-topping is not merely a cosmetic defect; it is a nonlinear operation, and nonlinear operations generate harmonics. A pure sinusoid clipped symmetrically at both rails produces odd harmonics (3rd, 5th, 7th…) whose amplitudes grow with the clipping depth. A crash pulse is not a sinusoid, but the same mechanism applies locally: the sharp entry and exit corners inject broadband energy, and the flat run removes the fundamental's peak, redistributing energy into higher frequencies. In practice this shows up as elevated spectral content above the channel's expected bandwidth — energy that was not present in the physical event and that will be amplified by any subsequent differentiation (since differentiation weights high frequencies linearly).

This is why clipping must be flagged before integration to velocity or displacement. Integrating a clipped acceleration underestimates the velocity change across the flat run, and the harmonic artifacts can produce spurious oscillations in the integrated result. The practical rule: never integrate a channel that has not passed a clipping screen. The screen is the derivative-threshold detector described next.

Onset detection with the first derivative and a threshold

The detector rests on a simple observation: during a flat run, consecutive samples differ by at most the quantization step plus noise, so the first difference is near zero. Define the discrete derivative

d[i] = x[i] - x[i-1]          # first difference, units: g per sample

and a threshold ε chosen from the channel's noise floor, not from the signal amplitude. A defensible starting point is ε = 3σn, where σn is the standard deviation of the first difference computed over a quiet pre-event window (typically 50–100 ms before trigger). For a 16-bit channel with ±500 g full scale and a quiet-window σn of about 0.4 g/sample, ε ≈ 1.2 g/sample. The detector flags sample i as "clipping candidate" when |d[i]| < ε and |x[i]| is within a small margin of the stated full scale (say, ≥ 0.98 × full scale). The second condition is essential: a genuinely quiet moment mid-pulse also has a small derivative, but it is not near the rail, so it must not be flagged.

The onset is then the first sample of the longest contiguous run of flagged samples that exceeds a minimum duration — typically 3 samples, which rejects single-sample coincidences. The exit is the last sample of that run. Report onset time, exit time, flat-run duration, and the rail value. A worked example with the parameters above: if the flagged run spans samples 312 through 480 at a 10 kHz sample rate, the flat run is (480 − 312 + 1) / 10000 = 16.9 ms, and the onset time is 31.2 ms after trigger. That duration is the number that goes into the severity caveat on the test report.

Choose ε from the pre-event noise floor, never from the peak amplitude. A threshold scaled to the signal will miss shallow clipping on low-amplitude channels and over-flag noisy ones. Recompute σn per channel and per test, because sensor and cabling noise vary between setups.

Distinguishing clipping from legitimate plateaus

Some physical events do produce near-flat segments — a rigid barrier contact can hold a load cell near a constant value for a few milliseconds. The discriminator is the rail test: a legitimate plateau sits at an arbitrary level set by physics, while clipping sits at the acquisition full scale. If the flat run's level matches the stated full scale within the channel's calibration tolerance, treat it as clipping. If it sits comfortably inside range, treat it as physical and document it. When the level is ambiguous (within 2% of full scale but not exactly at it), escalate to a visual review of the raw trace and check the sensor's own rated range — a sensor rated to ±500 g feeding a ±1000 g DAQ will clip at the sensor, not the DAQ, and the rail will be the sensor's limit.

Practical screening checklist

CheckParameter / rulePass criterion
Sign convention fixed+X forward, stated in channel metadataDocumented before analysis
Rail value knownmin(DAQ full scale, sensor rated range)Recorded per channel
Noise floor measuredσn over 50–100 ms pre-triggerε = 3σn computed
Derivative flag|d[i]| < ε and |x[i]| ≥ 0.98 × railNo run ≥ 3 samples
Flat-run duration(exit − onset + 1) / fsReported; > 2 ms triggers severity caveat
Integration gateChannel passed all aboveOnly then integrate to velocity

Run this screen on every raw channel before filtering, and archive the onset/exit timestamps alongside the processed data. When a channel fails, the correct action is to flag the affected interval as invalid, not to interpolate across it — interpolation fabricates a peak that never occurred and silently corrupts every downstream injury metric. The derivative-threshold detector gives you the interval boundaries precisely enough to exclude them and to state, in the test report, exactly how much of the pulse was lost to saturation.