type
status
date
slug
tags
summary
category
password
icon
AI 摘要
SAC (Seismic Analysis Code) is a general-purpose interactive program designed for the study of sequential signals, especially time-series data.
正如 SAR manual 上所写,SAC 是一个用于处理时间序列信号(地震学领域)的交互程序。它实现了一些常用的地震数据处理,包含包括重采样、插值、自/互相关、震相拾取、快速 Fourier 变换与反变换、谱估计、滤波、信号叠加等。
2025.04.23 —— 入门
由于 SAC 协议不允许用户对该软件进行二次分发,所以本次记录不会上传 SAC 软件的源代码和二进制包。
关于其安装教程请参照 SAC 参考手册。
- 在命令终端中,一次完整的启动
sac
和退出quit
称为一个 SAC 会话。
- SAC 的设计思想大概可以总结如下:
- 每个信号被保存到单独的 SAC 格式数据文件中;
- SAC 格式包含了描述数据特征的头段区和存储信号的数据区;
- 将单个或多个 SAC 文件从磁盘读入内存;
- 通过各种命令对内存中的数据进行操作;
- 操作完毕,将内存中的数据写入到磁盘,可以覆盖原 SAC 文件或写入新文件中。
以上,我们可知 SAC 对数据的任何处理操作都是在内存空间中进行的,不会对原始数据文件有任何修改,所以必须将处理完成的内存数据输出到物理空间。
- SAC 软件通过
read
和write
命令来读写数据:
r
命令可以使用通配符来读取,例如*
?
和[]
;
r
命令也可以添加more
选项来追加数据到当前内存;
- 从内存写出数据到磁盘时,建议使用前
prepend
后append
缀选项,如w prepend out-
;
- 如若想覆盖原数据文件,可以直接使用
w over
;
2025.05.08 —— 学习实例
1 插值 / 采样
如下情形,需要对数据进行重采样:
- 不同仪器的采样周期可能不同,需要将所有的数据重采样到相同的采样周期;
- 数据为不等间隔数据,需要插值成为等间隔数据;
- 数据的采样周期很小,导致数据量很大,而实际研究中不需要如此小的采样周期,因 而可以对数据做减采样以减小数据量;
- 数据的采样周期过大,实际研究中需要更小的采样周期,此时需对数据做增采样;
1.1 减采样 decimate
针对减采样,SAC 中定义了专用命令 decimate:
选项
n
设置减采样因子为 n,即每 n 个点中取一个点,n 取值范围为 2 到 7。选项
FILTER ON|OFF
打开或关闭抗混叠 FIR 滤波器,该命令为了抗混叠,默认打开。1.2 采样 interpolate
对等间隔或不等间隔数据进行插值以得到新采样率
interpolate
,但如果要降低采样率,由于该命令没有抗混叠滤波器,所以最好使用 decimate
命令。选项
DELTA v
设置新采样率为 v。数据的时间跨度(E-B)保持不变,npts 变化,E 由于需要与
b 的间距为 delta 的整数倍,所以可能会有微调。选项
NPTS n
强制设置插值后文件的数据点数为 n。时间宽度不变,delta 发生变化。选项
BEGIN o
设置在 o 处开始插值,该值将作为插值文件的起始时间,也可以通过 cut 命令设置 b 和 e 再进行插值操作。2 分量旋转 rotate
三个正交的地震传感器即可完全记录地面运动矢量。因此可以将三个正交的分量任意旋转到其它三个正交的方向上。
出于仪器安装的考虑,地震仪三分量一般都是 N、E、U 向的。而地震学里,由于 SH 波与 P-SV 波的解偶,更常处理的是径向(Radial)、切向(Tangential)、Z 向的三分量数据。因而地震信号的旋转是有必要的。
针对该需求,SAC 提供了
rotate
命令来将成对的正交分量旋转一个角度:TO GCP
旋转到大圆弧路径(“great circle path”)。两个分量必须都是水平分量且头段中必须定义台站和事件的经纬度。首先根据台站和事件经纬度计算出反方位角,并将分量旋转一定角度,使得旋转后的第一个分量沿着反方位角 ±180 度的方向,此时第一个水平分量由事件位置指向台站位置,即地震学中的径向(Radial)分量,一般方位码用 R 表示;第二个水平分量垂直于 R 分量,即地震学的切向(Tangential)分量,一般方位码用 T 表示。TO v
旋转一定角度使得第一个分量的方位角为 v 度。两个分量必须都是水平分量。THROUGH v
顺时针旋转 v 度。其中一个分量可以是垂直分量。NORMAL|REVERSED
输出分量为正/负极性。rotate
命令可以对多对分量旋转一定的角度,内存中的每两个文件为一对分量,必须注意每对文件的先后顺序。每对分量必须拥有相同的台站名、事件名、采样率和数据点数,且头段变量 cmpaz 和 cmpinc 必须定义,程序会检查两个分量是否正交(允许 0.02 度的偏差)。