2022-10-28 Adaptive stacking,一种最大化叠加beam能量的方法

import numpy as np
from numba import jit
@jit()
def astack(array, norm_p = 3, nsi = 1, roll_scale = np.array([-20,20])):
    nch, npts = array.shape
    ref_trace = np.zeros(npts)
    out_data  = np.zeros_like(array)
    for i in range(nsi):
        tau_ = np.zeros(nch)
        if i == 0:
            data_ = np.zeros_like(array)
            for ch, tr in enumerate(array):
                data_[ch] = tr/np.sqrt(np.sum(np.square(tr)))  #6s, 300个点做l2归一化
                ref_trace += tr/np.sqrt(np.sum(np.square(tr))) #6s, 归一化的reference trace
            ref_trace = ref_trace/nch
            tau = np.zeros(nch)
            
            ref_4s = ref_trace[50:-50]  #4s的reference trace
            data_4s = np.zeros((nch, 200))
            for n, tr in enumerate(data_):
                P_tr = np.zeros(roll_scale[1] - roll_scale[0])
                for j, shift_samp in enumerate(np.arange(roll_scale[0], roll_scale[1])):
                    tr_roll = np.roll(tr, shift_samp)[50:-50]
                    P_tr[j] = np.linalg.norm((ref_4s - tr_roll), norm_p)
                tau[n] = np.argmin(P_tr)
            
            for b, idx in enumerate(tau):
                tau_[b] = np.arange(roll_scale[0], roll_scale[1])[int(idx)]
#             np.arange(roll_scale[0], roll_scale[1])[]
            
#             tau_ = np.array([np.arange(roll_scale[0], roll_scale[1])[int(idx)] for idx in tau])
            
#     ref_4s = np.zeros(200)
#     for i, tr in enumerate(data_):
#         tr_roll = np.roll(tr, tau_[i])[50:-50]
#         ref_4s+=tr_roll
#     ref_4s = ref_4s/nch
            
    return tau_, ref_4s
            

还没有写多个循环,加入递归的操作。该算法的目的是把没有对齐的波形自适应拉齐。
参考自Rawlinson, N., & Kennett, B. L. (2004). Rapid estimation of relative and absolute delay times across a network by adaptive stacking. Geophysical Journal International, 157(1), 332-340.

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 前言 Google Play应用市场对于应用的targetSdkVersion有了更为严格的要求。从 2018 年...
    申国骏阅读 65,069评论 15 98
  • 《来,我们说说孤独》 1·他们都在写孤独 一个诗人 如果 不说说 内心的孤独 不将孤独 写进诗里 是不是很掉价呢 ...
    听太阳升起阅读 9,927评论 1 7
  • 自幼贫民窟长大的女子,侥幸多念了两本书,枉以为可以与人平起平坐。可是人生从来都是接力赛,我们却天真的当成了百米冲刺...
    Leeanran阅读 11,061评论 1 5
  • 云舒老师,姓甚名谁,男的女的,多大岁数,这些我全然不知。之所以要写写云舒老师,完全是因为他写的文章,如一个巨大的磁...
    数豆者m阅读 7,130评论 6 9
  • """1.个性化消息: 将用户的姓名存到一个变量中,并向该用户显示一条消息。显示的消息应非常简单,如“Hello ...
    她即我命阅读 8,968评论 0 6

友情链接更多精彩内容