- Stream.decimate(factor, no_filter=False, strict_length=False)
Downsample data in all traces of stream by an integer factor.
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 with
If the length of the data array modulo
decimation_factoris not zero then the end time of the trace is changing on sub-sample scale. To abort downsampling in case of changing end times set
Make sure to choose the most appropriate one for the problem at hand.
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 stream object. This also makes an entry with information on the applied processing in
stats.processingof every trace.
For the example we switch off the automatic pre-filtering so that the effect of the downsampling routine becomes clearer.
>>> from obspy import Trace, Stream >>> tr = Trace(data=np.arange(10)) >>> st = Stream(traces=[tr]) >>> tr.stats.sampling_rate 1.0 >>> tr.data array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) >>> st.decimate(4, strict_length=False, no_filter=True) ... <...Stream object at 0x...> >>> tr.stats.sampling_rate 0.25 >>> tr.data array([0, 4, 8])