obspy.core.trace.Trace.decimate
- Trace.decimate(factor, no_filter=False, strict_length=False)[source]
Downsample trace data by an integer factor.
- Parameters
Currently a simple integer decimation is implemented. Only every
decimation_factor
-th sample remains in the trace, all other samples are thrown away. Prior to decimation a lowpass filter is applied to ensure no aliasing artifacts are introduced. The automatic filtering can be deactivated withno_filter=True
.If the length of the data array modulo
decimation_factor
is not zero then the end time of the trace is changing on sub-sample scale. To abort downsampling in case of changing end times setstrict_length=True
.Note
The
Trace
object has three different methods to change the sampling rate of its data:resample()
,decimate()
, andinterpolate()
Make sure to choose the most appropriate one for the problem at hand.
Note
This operation is performed in place on the actual data arrays. The raw data is not accessible anymore afterwards. To keep your original data, use
copy()
to create a copy of your trace object. This also makes an entry with information on the applied processing instats.processing
of this trace.Example
For the example we switch off the automatic pre-filtering so that the effect of the downsampling routine becomes clearer:
>>> tr = Trace(data=np.arange(10)) >>> tr.stats.sampling_rate 1.0 >>> tr.data array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) >>> tr.decimate(4, strict_length=False, ... no_filter=True) <...Trace object at 0x...> >>> tr.stats.sampling_rate 0.25 >>> tr.data array([0, 4, 8])