filter1d
- 官方文档:
- 简介:
对1D表数据做时间域滤波
filter1d 用于对多列时间序列数据做时间域滤波。用户需要指定哪一列数据代表时间(即
自变量)。若输入的时间序列是等间隔且无间断或outliers则滤波速度较快。对于有
间断的不等间隔数据,需要使用 -L -Q 或 -S 选项。
对于空间序列数据,提供了一个选项用于计算沿着测线的距离,并以此作为滤波的自变量。
语法
gmt filter1d
[ table ]
-Ftypewidth[+h]
[ -Dincrement ]
[ -E ]
[ -Llack_width ]
[ -Nt_col ]
[ -Qq_factor ]
[ -Ssymmetry_factor ]
[ -T[min/max/]inc[+a][+e|i|n]|-Tfile|list ]
[ -V[level] ]
[ -aflags ]
[ -bibinary ]
[ -bobinary ]
[ -dnodata[+ccol] ]
[ -eregexp ]
[ -fflags ]
[ -ggaps ]
[ -hheaders ]
[ -iflags ]
[ -jflags ]
[ -oflags ]
[ -qflags ]
[ -:[i|o] ]
[ --PAR=value ]
输入数据
- table
一个或多个ASCII或二进制表数据。若不提供表数据,则会从标准输入中读取。
必须选项
- -F
- -Ftypewidth[+h]
设置滤波器类型
滤波器分为两大类,卷积滤波器和非卷积滤波器。 type 用于指定滤波器类型, width 指定滤波器宽度(单位与时间数据相同)。
对于卷积滤波器,type 可以取:
b Boxcar: 所有权重相同
c Cosine Arch: 权重为cosine曲线
g Gaussian: 权重为高斯函数
f Custom: 不指定 width 而是给定一个含单列数据的文件,以指定权重系数
对于非卷积滤波器,type 可以取:
m Median: 返回中位数
p 最大似然概率(众数估计器):返回众数。 如果发现多个众数,则返回它们的平均值。如果希望返回众数中的最小值或最大值,请分别附加 +l 或 +u。
l Lower: 返回所有值中的最小值
L Lower: 返回所有正值中的最小值
u Upper: 返回所有值中的最大值
U Upper: 返回所有负值中的最大值
大写的 B|C|G|M|P|F 会使用健壮滤波器。即在滤波时会将outliers替换为中位数。 outliers 定义为偏离中位数 2.5 倍的 L1 sacle (1.4826倍的Median absolute deviation)。
对于 L|U 可能会出现没有数据大于或小于0,此时滤波器会返回0.0。
该模块默认对数据进行低通滤波,加上 +h 选项则对数据进行高通滤波。
可选选项
- -D
- -Dincrement
当输入的时间序列是不等间隔采样时,需要使用该选项设置输出数据的分辨率 increment。 所有横坐标(时间)都会被rounded off到 increment 的整数倍。 当然,也可以使用 sample1d 对时间序列做重采样。
- -E
- -E
输出时间序列的首尾端数据。默认情况下,首尾两端都会丢失半滤波器宽度的数据点
- -L
- -Llack_width
检查数据间断。若输入数据存在超过 lack_width 的间断,则该数据点不输出值。
- -N
- -Nt_col
指定哪一列数据包含自变量(即时间)。默认值为0,即第一列。
- -Q
- -Qq_factor
通过检查卷积过程中的平均权重以评估输出值的质量因子。
q_factor 的取值为0到1,若某点的卷积的平均权重小于 q_factor 则不输出该点。
- -S
- -Ssymmetry_factor
检查数据关于时间窗中心的对称性。
symmetry_factor 的取值范围为0到1。 若 ( (abs(n_left - n_right)) / (n_left + n_right) ) > factor,则该点不输出值。
- -T
- -T[min/max/]inc[+a][+e|i|n]|-Tfile|list
生成时间序列
生成从 min 到 max 间隔为 inc 的等间隔数列。
- -V
- -V[level]
设置 verbose 等级 [w]。 (参数详细介绍)
- -a
- -a[[col=]name][,…]
控制输入或输出为 OGR/GMT 格式时对非空间元数据的处理方式。 (参数详细介绍)
- -bi
- -bi[ncols][type][w][+l|b]
控制二进制文件的输入格式。 (参数详细介绍)
- -bo
- -bo[ncols][type][w][+l|b]
控制二进制文件的输出格式。 (参数详细介绍)
- -d
- -d[i|o]nodata
将某些特定值当作 NaN。 (参数详细介绍)
- -e
- -e[~]“pattern” | -e[~]/regexp/[i]
筛选或剔除匹配指定模式的数据记录。 (参数详细介绍)
- -f
- -f[i|o]colinfo
显式指定当前输入或输出数据中每一列的数据类型。 (参数详细介绍)
- -g
- -g[a]x|y|d|X|Y|D|[col]zgap[+n|p]
确定数据或线段的间断。 (参数详细介绍)
- -h
- -h[i|o][n][+c][+d][+msegheader][+rremark][+ttitle]
在读/写数据时跳过文件开头的若干个记录。 (参数详细介绍)
- -i
- -icols[+l][+sscale][+ooffset][,…][,t[word]]
对输入的数据进行列选择以及简单的代数运算。 (参数详细介绍)
- -j
- -je|f|g
设置球面距离的计算方式。 (参数详细介绍)
- -o
- -ocols[,…][,t[word]]
对输出的数据进行列选择以及简单的代数运算。 (参数详细介绍)
- -q
- -q[i|o][~]rows[+ccol][+a|f|s]
对输入或输出的行进行筛选,该选项在一定程度上可以代替 gawk 的某些功能。 (参数详细介绍)
- -:
- -:[i|o]
交换输入或输出数据的前两列。 (参数详细介绍)
- -^ 或 -
显示简短的帮助信息,包括模块简介和基本语法信息(Windows下只能使用 -)
- -+ 或 +
显示帮助信息,包括模块简介、基本语法以及模块特有选项的说明
- -? 或无参数
显示完整的帮助信息,包括模块简介、基本语法以及所有选项的说明
- --PAR=value
临时修改GMT参数的值,可重复多次使用。参数列表见 配置参数
距离单位
ASCII 格式精度
ASCII 格式输出数据通过 gmt.conf 配置文件控制。控制经纬度格式的参数为 FORMAT_GEO_OUT ;控制绝对时间的的参数包括 FORMAT_DATE_OUT 和 FORMAT_CLOCK_OUT ;普通浮点数通过参数 FORMAT_FLOAT_OUT 控制。上述格式控制可能会导致精度损失,这会在下游计算中导致一些问题。 如果用户需要保证数据精度,则应考虑将数据写为二进制文件,或者使用 FORMAT_FLOAT_OUT 指定更多的有效数字。
生成一维数组
下面将展示如何使用 math 生成一维数组(其中大部分操作也可通过 linux 中的 seq 命令方便地实现)
不使用任何子选项
以 0.1 为步长,生成 3.1 到 4.2 等等间隔序列
gmt math -o0 -T3.1/4.2/0.1 T =
3.1
3.2
...
4.2
+a 选项
该选项不对生成的数列进行运算操作,而是将该数列以列的形式追加到输出表数据,类似 linux 中的 paste 命令。
+b 选项
以 3 和 20 分别为起点和终点,创建一个 2 的整数幂的列表,将生成 的整数幂以 1 为步长取值 -T3/20/1+b
gmt math -o0 -T3/20/1+b T =
4
8
16
+l 选项
以 7 和 135 分别为起点和终点,先创建一个 10 的整数幂的列表,当 inc 为 1 时,输出该列表;当 inc 为 2 时,同时输出该列表中每个元素的 1,2,5 倍值(不包括超出原始数据范围的部分); 当 inc 为 3 时,同时输出 该列表中每个元素的 1,2,…,9 倍值(同样不包括超出原始数据范围的部分)。 -T7/135/2+l 将会生成如下数列
gmt math -o0 -T7/135/2+l T =
10
20
50
100
inc 为负整数时,将实现如下效果
gmt math -o0 -T1e-4/1e4/-2+l T =
0.0001
0.01
1
100
10000
+i 选项
该选项将以 1 作为默认步长,第三个数字做为每步长中的数字个数 length。假设需要在 1 分钟内每 24 秒生成一帧
gmt math -o0 -T0/60/24+i T =
0
0.0416666666667
0.0833333333333
0.125
0.166666666667
...
60
+n 选项
生成固定长度的数列。以 3.44 和 7.82 为 起点和终点,生成长度为 5 的等间隔序列
gmt math -o0 -T3.44/7.82/5+n T =
3.44
4.535
5.63
6.725
7.82
-T 后直接加文件或逗号分隔的数列
-T 后可以直接加文件,文件中即为要生成的列表;另外,可以直接使用逗号分隔, 将列表附加到 -T 选项后,如下为 Fibonacci 数列前 6 项
gmt math -o0 -T0,1,1,2,3,5 T =
0
1
1
2
3
5
注 : 如果数列只包含一个值,必须在其后加逗号以表明仍是一个数列
+u 选项
如果文件或者逗号分隔的数列中有重复数字或未排序,可以使用 +u 选项去重并排序。
+t 选项
生成绝对时间序列。在 inc 后分别添加 y ,o ,d ,h , m 和 s 表示时间步长的单位为年,月,日,时,分,秒。在其后附加 +t 选项, 可以进一步强调生成时间序列,也可以不加
gmt math -o0 -T2020-03-01T/2020-03-07T/1d T =
2020-03-01T00:00:00
2020-03-02T00:00:00
2020-03-03T00:00:00
2020-03-04T00:00:00
2020-03-05T00:00:00
2020-03-06T00:00:00
2020-03-07T00:00:00
生成距离序列
如果输入文件中包含两列以上的数据,可以使用前两列计算距离,并生成等距序列。 在 inc 后分别添加 d,m,s,e,f,M,n 和 u 表示距离步长的单位为度,分,秒,米,英尺,公里,英里,海里,英尺。如果 为笛卡尔坐标,使用 c 作为距离步长单位。
+e 选项
如果只给定 inc 而从数据中获取最大值和最小值,则 (max - min)/inc 可能 不是整数,GMT 讲会自动对 inc 进行一定的调整。如果不想调整 inc ,则可以 使用 +e 选项,GMT 会固定最小值,适当调整最大值。