这是本博客的第一篇文章,以地震勘探中最常用的 Ricker 子波(雷克子波)为例,同时演示公式、代码块和插图的写法——以后写新文章时可以直接参考本文源码。

数学公式

Ricker 子波是高斯函数的二阶导数(取负),时间域表达式为:

$$ r(t) = \left(1 - 2\pi^2 f_m^2 t^2\right) e^{-\pi^2 f_m^2 t^2} $$

其中 $f_m$ 为主频(peak frequency)。行内公式同样支持,例如子波主周期约为 $T \approx \sqrt{6}/(\pi f_m)$。

对于海上高分辨率勘探,常用主频可达上百赫兹;主频越高,子波在时间域越窄,垂向分辨率越高。地震记录的褶积模型可写作:

$$ s(t) = r(t) * \xi(t) + n(t) $$

其中 $\xi(t)$ 为反射系数序列,$n(t)$ 为噪声。

代码块

Python 实现(带行号与一键复制按钮):

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
import numpy as np

def ricker(fm: float, dt: float, length: float = 0.08) -> tuple[np.ndarray, np.ndarray]:
    """生成 Ricker 子波。

    fm     -- 主频 (Hz)
    dt     -- 采样间隔 (s)
    length -- 子波总时长 (s)
    """
    t = np.arange(-length / 2, length / 2 + dt, dt)
    a = (np.pi * fm * t) ** 2
    w = (1 - 2 * a) * np.exp(-a)
    return t, w

t, w = ricker(fm=50.0, dt=0.001)

插图

图片放在文章同目录下(page bundle),直接用相对路径引用:

主频 50 Hz 的 Ricker 子波

写作提示

  • 新文章:hugo new posts/文章名/index.md,图片与 index.md 放同一目录
  • 有公式的文章在 front matter 中设 math: true
  • draft: true 的文章不会发布,写完改为 false 再推送