✍️ 田冬冬 , 朱邓达 • 📅 2025-12-30

# filter1d

官方文档:

  filter1d

简介:

  对1D表数据做时间域滤波

filter1d 用于对多列时间序列数据做时间域滤波。用户需要指定哪一列数据代表时间（即 自变量）。若输入的时间序列是等间隔且无间断或outliers则滤波速度较快。对于有 间断的不等间隔数据，需要使用 `-L` `-Q` 或 `-S` 选项。

对于空间序列数据，提供了一个选项用于计算沿着测线的距离，并以此作为滤波的自变量。

## 语法

gmt filter1d [ table ] `-F` type width[+h] [ `-D` increment ] [ `-E` ] [ `-L` lack_width ] [ `-N` t_col ] [ `-Q` q_factor ] [ `-S` symmetry_factor ] [ `-T`[min/max/]inc[+a][+e|i|n]|`-T` file|list ] [ `-V`[level] ] [ `-a` flags ] [ `-bi` binary ] [ `-bo` binary ] [ `-d` nodata[+c col] ] [ `-e` regexp ] [ `-f` flags ] [ `-g` gaps ] [ `-h` headers ] [ `-i` flags ] [ `-j` flags ] [ `-o` flags ] [ `-q` flags ] [ `-:`[i|o] ] [ --PAR=value ]

## 输入数据

table

  一个或多个ASCII或二进制表数据。若不提供表数据，则会从标准输入中读取。

## 必须选项

-F

-F type width[+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

-D increment

  当输入的时间序列是不等间隔采样时，需要使用该选项设置输出数据的分辨率 increment。 所有横坐标（时间）都会被rounded off到 increment 的整数倍。 当然，也可以使用 sample1d 对时间序列做重采样。

-E

-E

  输出时间序列的首尾端数据。默认情况下，首尾两端都会丢失半滤波器宽度的数据点

-L

-L lack_width

  检查数据间断。若输入数据存在超过 lack_width 的间断，则该数据点不输出值。

-N

-N t_col

  指定哪一列数据包含自变量（即时间）。默认值为0，即第一列。

-Q

-Q q_factor

  通过检查卷积过程中的平均权重以评估输出值的质量因子。

  q_factor 的取值为0到1，若某点的卷积的平均权重小于 q_factor 则不输出该点。

-S

-S symmetry_factor

  检查数据关于时间窗中心的对称性。

  symmetry_factor 的取值范围为0到1。 若 ( (abs(n_left - n_right)) / (n_left + n_right) ) > factor，则该点不输出值。

-T

-T[min/max/]inc[+a][+e|i|n]|-T file|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]z gap[+n|p]

  确定数据或线段的间断。 (参数详细介绍)

-h

-h[i|o][n][+c][+d][+m segheader][+r remark][+t title]

  在读/写数据时跳过文件开头的若干个记录。 (参数详细介绍)

-i

-i cols[+l][+s scale][+o offset][,...][,t[word]]

  对输入的数据进行列选择以及简单的代数运算。 (参数详细介绍)

-j

-je|f|g

  设置球面距离的计算方式。 (参数详细介绍)

-o

-o cols[,...][,t[word]]

  对输出的数据进行列选择以及简单的代数运算。 (参数详细介绍)

-q

-q[i|o][~]rows[+c col][+a|f|s]

  对输入或输出的行进行筛选，该选项在一定程度上可以代替 gawk 的某些功能。 (参数详细介绍)

-:

-:[i|o]

  交换输入或输出数据的前两列。 (参数详细介绍)

-^ 或 -

  显示简短的帮助信息，包括模块简介和基本语法信息（Windows下只能使用 -）

-+ 或 +

  显示帮助信息，包括模块简介、基本语法以及模块特有选项的说明

-? 或无参数

  显示完整的帮助信息，包括模块简介、基本语法以及所有选项的说明

--PAR=value

  临时修改GMT参数的值，可重复多次使用。参数列表见 配置参数

## 距离单位

GMT支持多种不同的距离单位，以及三种不同的球面距离计算方式。 详情见 单位 和 -j 选项。

## ASCII 格式精度

ASCII 格式输出数据通过 gmt.conf 配置文件控制。控制经纬度格式的参数为 FORMAT_GEO_OUT ；控制绝对时间的的参数包括 FORMAT_DATE_OUT 和 FORMAT_CLOCK_OUT ；普通浮点数通过参数 FORMAT_FLOAT_OUT 控制。上述格式控制可能会导致精度损失，这会在下游计算中导致一些问题。 如果用户需要保证数据精度，则应考虑将数据写为二进制文件，或者使用 FORMAT_FLOAT_OUT 指定更多的有效数字。

## 相关模块

sample1d, split