# Earthworm Module:
Decimate Overview

(last revised 11 May, 2004)

The Decimate module implements multi-stage filter and decimation routines to process waveform data (TYPE_TRACEBUF and/or TYPE_TRACEBUF2) coming from the InRing defined in decimate.d. Decimated trace messages are written to the OutRing with their SCNLs changed as specified in decimate.d. A warning is given if the input and output SCNL are the same. The decimated trace message retains its original message type (either TYPE_TRACEBUF or TYPE_TRACEBUF2), but it has decimate's module_id and (normally) a new SCNL name.

The decimation is performed as part of the filter routine for efficiency. The FIR filter coefficients are determined from the specified decimation rate, using the Remez Exchange algorithm. This produces an equi-ripple filter. Currently the ripple limits are hard coded to 0.005 in the pass band and 0.0031 in the stop band (see decimate.h in the source directory.) The foefficients zeroes of each filter, as well as the effective delay, are logged on startup. FIR filters have no poles.

Module Index | Decimate Configuration File