SAC数据处理笔记

SAC数据处理流程

命令:

  • 全称 简写 参数 介绍
  • /表示未知,如简写未知则在此处填写 /。
    参考:

Seisman-SAC参考手册

滤波操作

参考:滤波

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
fg impulse delta 0.01 npts 1000   # 生成脉冲函数, delta和npts可调
bp c 0.2 2 n 2 p 1 # 要查看的滤波参数
beginframe
xvport 0.1 0.9; yvport 0.7 0.9
fileid off
qdp off
title 'Time Domain Response'
p # 绘制时间域响应
fft
xvport .1 .45; yvport .15 .55
title 'Amplitude Response'
psp am loglog # 振幅响应
xvport .55 .9
title 'Phase Response'
psp ph linlin # 相位响应
endframe

bandpass bp 无限脉冲带通滤波

bp c 0.2 2 n 2 p 1
  • / / butter|bessel|c1|c2 使用butterworth、bessel、切比雪夫I型、切比雪夫II型滤波器。 默认使用巴特沃兹滤波器。
  • corners c v1 v2 拐角频率设置,如上面的命令中,为0.2HZ和2HZ
  • Npoles n v 极数,为1-10之间的整数
  • PASSES p v 通道数,取值为1或2
  • tranbw / v 设置切比雪夫滤波器转换带宽
  • atten / v 设置切比雪夫滤波器衰减因子

lowpass

highpass

bandrej

震相理论到时

保存震相到时信息的头段包括:a、f、tn,(n取值1-9)
相应的震相名信息:ka、kf、ktn。

chnhdr(ch) 手动标记

ch t0 400 t1 799 kt0 P kt1 S
ch allt -123 iztype i0 
# 例如第二行表示从所有的偏移时间减去123,同时改变描述参考时间类型的字段iztype
  • file / n1 n2 修改指定文件的头段变量,n指内存中文件的文件号
  • / / v vname SAC头段变量名、变量名对应的值
  • allt / v 将所有已定义的时间相关头段变量的值加v秒,同时参考时刻减去v秒

traveltime命令 根据预定义的速度模型计算指定震相的走时

命令默认值:

traveltime MODEL iasp91 KM PHASE P S Pn Pg Sn Sg
  • model / v 指定的速度模型,可以为iasp91和ak135
  • picks / v v取值0-9,表示第一个震相的到时存储在对应头段变量tn中,若未指定不写入头段
  • phase / vlist 要计算或标记的震相列表,如P、S、Pn
  • verbose|quiet / / 前者在终端输出震相走时以及相对于文件参考时刻的描述,后者不显示震相走时信息
  • m|km / / 头段变量evdp的单位为m或者km

taup_setsac命令

Taup软件提供的命令,用于计算震相理论到时并保存到SAC文件中

波形排序

sort命令

  • / / v v指头段变量名,即按照该变量名的值进行排序,最多输入5个,优先按照前面的变量排序
  • ascend|descend / / 前者按照升序排列,后者按照降序。默认升序。每一个变量名都需要指定升序或者降序。

质量控制(标记或删除信噪比低或者不合适的波形)

人工挑选坏的波形。

ppk p 5 # plot 每次绘制5个波形
# 如果波形的质量很差,使用t9标记
wh #将标记的t9保存到头段中
q

t9标记后一般都是正值,而好的波形为未定义状态,值为-12345.0。在命令行使用下面的命令删除定义的波形:

saclst t9 f *.SAC | awk '$2>0 {print "rm",$1}' | sh

也可以用如下命令将不好的波形移动到专门的文件夹下:

mkdir BADWAVE
saclst t9 f *.SAC | awk '$2>0 {print "mv",$1,"BAD/"}' | sh

whitehdr(wh) 将内存中文件的头段区覆盖磁盘文件中的头段区

直接使用,不需要任何参数。

注意:

write命令的over选项可以用内存中头段区和数据区覆盖磁盘文件中的头段区
和数据区。该命令用内存中头段区覆盖磁盘文件中的头段区,数据区不会被覆盖。
如果使用了cut命令,读取数据时将仅读入部分数据,内存中的头段区将会做
相应修改以反映cut命令的效果,但是磁盘中的数据并没有被修改,因而此时
不能使用writehdr命令。对被cut的数据使用writehdr命令将可能导致磁
盘中的数据产生类似于平移或截断的效果。

震相拾取(到时标定)

plotpk(ppk)命令(模式)

ppk # 进入ppk模式,进入后终端不在提示sac>;
# 如果之前打开过绘图,需要鼠标点击一下绘图窗口。

直接按下q,即可退出ppk模式。

注意:进入ppk模式所有键盘输入会解释为ppk命令。当焦点转移到终端时,键盘输入显示在
终端中,退出ppk模式时sac依次解释终端中的命令。

ppk模式下拾取震相

在绘图窗口,移动鼠标到标记到时位置,依次按下t、0,在标记处出现T0标记,并保存到相应名称头段变量中。

按q退出ppk模式。

wh # 保存头段变量

全局变量SAC_PPK_USE_CROSSHAIRS可以控制ppk下鼠标形态。0为十字,1为全图十型。

关闭快速绘图(显示图形时降采显示)

现代计算机性能足够,通常关闭快速绘图已获得最佳观感。qdp控制快速绘图开启与关闭。

qdp off # 关闭快速绘图

放大与缩小

光标移动到某一位置按下x键,再移动到另一个位置按下x键。两次键入确定了一个时间窗,
只显示该时间窗内的波形。

在窗口某位置按下左键拖动到另一位置实现框内波形放大。

键入o缩小图幅,但是只能回退5次。

同时标记三分量

使用命令:

ppk p 3 a m

显示三个波形数据。在ppk模式下:

键入 n 可以依次显示接下来的3个波形。波形显示完成后自动退出ppk模式。

键入 b 可以显示前3个波形。

注意:三个分量波形数据参考时刻必须相同;内存中存储的数据顺序需要符合需求。

ppk命令

详见ppk命令

plotpk 
  • perplot / n|ON|OFF 一张图绘制n个文件,on表示使用旧值,off表示绘制所有文件
  • bell / on|off 绘图区内击键时是否响铃
  • absolute|relative / / 绝对/相对绘图模式
  • reference / v|on|off v表示参考线的参考值,on|off是否显示参考线
  • markall / on|off 一次标记一张图上所有文件到时|指标及光标位置对应的震相到时
  • sacelocs / on|off 是否将L命令拾取的位置保存到黑板变量中

标定P、S波

ppk模式可以键入:

  • p 标定P波到时,到时信息保存到头段变量A中

  • s 标定S波到时,到时信息保存到头段变量T0中。

  • 键入e,震相onset类型,震相方向、震相质量等信息仅用于标记P、S波,这些信息会保留在头段变量KA或者KTO中。
    例如:进入ppk模式,按下ed1p,KA中的值为EPD1,表示Emergent和极性向下的P波,震相质量为1表示震相清晰。

ppk修改版

详见faster-ppk

信号叠加

SAC提供Signal Stack Subprocess(简称SSS)来实现。

进入和退出sss

sss # 键入sss进入子程序
quitsub # 退出子程序
quit # 退出sac

添加文件

sss # 进入子程序
addstack a.sac weight 1 delay 20 seconds
  • addstack 读入文件a.sac。

  • weight 设置文件在叠加中的权重,值为0-1。

  • delay 波形向后延迟。

    liststack # 列出叠加文件列表中的文件属性

叠加文件

zerostack # 清除之前添加的文件和设置
addstack # 添加文件
timewindow 0 19 # 选定时窗,这里为0-19秒
sumstack # 叠加波形

注意:波形按照相对时刻对齐;叠加后会做归一化。