def rms_envelope(data,window_size):
envelope = np.abs(scipy.signal.hilbert(data))
rms_envelope = np.sqrt(np.convolve(envelope**2, np.ones(window_size) / window_size, mode='valid'))
return rms_envelope
def noi2duration(data, pick_df, win):
Env = np.zeros((4929, data.shape[1]-win+1))
Du = np.zeros(4929)*np.nan
Chs = np.zeros(4929)*np.nan
# Ch = []
for i, tr in enumerate(data):
env = rms_envelope(tr, win)
Env[i] = env
phase_types = pick_df[(pick_df['ch']==i)]['phase_type']
if ('P' in phase_types.values) and ('S' in phase_types.values):
# Ch.append(i)
p_pick = pick_df[(pick_df['ch']==i)&(pick_df['phase_type']=='P')]['phase_index']
s_pick = pick_df[(pick_df['ch']==i)&(pick_df['phase_type']=='S')]['phase_index']
p_pick = np.array(p_pick)[0]
s_pick = np.array(s_pick)[0]
n_slice = env[p_pick-1000:p_pick-200] # 2 - 10 s before p_pick
n_level = np.mean(n_slice)
coda_slice = env[s_pick:]
if np.argwhere(coda_slice-n_level<=0).size>=1:
t2s = np.argwhere(coda_slice-n_level<=0)[0][0]
s2p = s_pick - p_pick
tau = (t2s+s2p)/100
Chs[i] = i
# Ch.append(i)
Du[i] = tau
else:
continue
return Env, Du, Chs
2024-12-30 用noise level量取coda duration
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
推荐阅读更多精彩内容
- 每一个不曾起舞的日子,都是对生命的辜负。——尼采 第一次听到这句话,是来自陈果的爱情哲学课。好像感到被触动了,说得...
- 每年到这个时候,身边就会有很多人开始咳嗽、咳痰、流鼻涕、打喷嚏的,有些是感冒、有些是哮喘、有些是气管炎,有些的鼻炎...
- 唐浩明评点曾国藩家书之致澄弟【1251】2024-12-30 致澄弟 同治元年1862闰八月初四日 澄弟左右: 沅...