ObsPy提供了多个滤波功能,这里我先从高通滤波开始:

一,滤波过程

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
import obspy
import obspy.signal.filter

import numpy as np
import matplotlib.pyplot as plt

wc=obspy.read("II.ESK.00.BHZ_2008-05-12T06_38_34.716_2008-05-12T06_49_34.716.sac")
tr=wc[0]

tr_filt=tr.copy()
tr_filt.filter('highpass',freq=1.0,corners=1,zerophase=True)

tr_enve=tr_filt.copy()
data=tr_enve.data
data_enve=obspy.signal.filter.envelope(data)

tr_inte=tr_enve.copy()

t = np.arange(0, tr.stats.npts / tr.stats.sampling_rate, tr.stats.delta)
plt.subplot(311)
plt.plot(t, tr.data, 'k')
plt.ylabel('Original record')

plt.subplot(312)
plt.plot(t, tr_filt.data, 'k')
plt.ylabel('1Hz_Highpassed Data')

plt.subplot(313)
plt.plot(t,data,'k')
plt.plot(t,data_enve,'r')
plt.ylabel('Kinetic energy density')

plt.xlabel('Time [s]')
plt.suptitle(tr.stats.starttime)
plt.show()

二,结果

注意:这里的包络线是错误的