Downsample data in all traces of stream 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 with no_filter=True.
If the length of the data array modulo decimation_factor is not zero then the endtime of the trace is changing on sub-sample scale. To abort downsampling in case of changing endtimes set strict_length=True.
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 stream object. This also makes an entry with information on the applied processing in stats.processing of every trace.
Example
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)
>>> tr.stats.sampling_rate
0.25
>>> tr.data
array([0, 4, 8])