type
status
date
slug
summary
tags
category
icon
password
众所周知,数据处理中,时间差的计算相对普通数据的差值计算要复杂很多。在地震数据处理和绘图时,经常需要计算时间差,windows的命令行中持支持简单的四则运算和逻辑运;linux或mac的shell中虽然提供了
date
命令,可以对时间数据进行操作,但计算时间差需要将绝对时间转为相对时间后进行差值计算,并且GUN和BSD中的date
命令存在差异,致使linux和mac下date
命令的使用常常混淆。那么有没有以直接计算时间差的简便方法,答案当然是有。GMT中的
math
模块提供了大量简单或复杂的计算功能,其中`DIFF
`运算符可以用来计算序列相邻数据的差值,SUB
运算符也可以对两组数据做减法,并且对于时间序列同样可操作。因此,我们只需要对数据的输入和输出格式做限定,即可通过这些功能方便的实现时间差的计算。计算时间序列的相邻时间差
可以使用
DIF
运算符实现。time文件中保存了一组发震时刻数据
通过以下方法可计算相邻地震之间的时间间隔
DIFF
计算时间序列的相邻时间差;
-C0
表示对读取的time数据表的第0列进行操作;
-N1/0
指定时间数据的id,/
前的1表示数据的列数,/
后的0表示时间在第0列;
-f
指定时间为绝对时间或相对时间,i/o
分别用来指示设置的是输入数据还是输出数据,T
表示绝对时间,t
表示相对时间;
time
为数据文件
DIV
表示除法,其之前的两个数依次为被除数和除数。
运行结果
计算多个时间序列的时间差
通过
SUB
功能实现计算输入数据与指定时间之间的差
此处
-fi/o
后的0:1
表示指定的绝对时间和相对时间作用于标准输入的第0列之第1列运行结果
计算连个时间序列的对应时间差
SUB
同样可以对两个时间序列文件计算时间差运行结果
输入的时间序列文件分别为
以上方法均需要
-fiT
指定输入数据为绝对时间,并设置-fot
设置输出数据为相对时间(默认单位s)。其实,
gmt math
在对时间数据进行计算时,都是先将绝对时间转为相对1970-01-01的相对时间(输入数据本身为相对时间的除外),然后进行计算。通过-fot
设置输出数据为相对时间时,才能显示为浮点数据,否则仍为相对1970-01-01的绝对时间表示格式。注意
-C
选项用来设置要对读取的数组中的哪个序列进行操作,其在语句中的位置非常重要,不同位置可能导致不同的计算结果,具体参考GMT中文手册/gmtmath模块