FILTER1D(1gmt) | GMT | FILTER1D(1gmt) |

# NAME¶

filter1d - Time domain filtering of 1-D data tables

# SYNOPSIS¶

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

**Note:** No space is allowed between the option flag and the
associated arguments.

# DESCRIPTION¶

**filter1d** is a general time domain filter for multiple
column time series data. The user specifies which column is the time (i.e.,
the independent variable). (See **-N** option below). The fastest
operation occurs when the input time series are equally spaced and have no
gaps or outliers and the special options are not needed. **filter1d** has
options **-L**, **-Q**, and **-S** for unevenly sampled data with
gaps. For spatial series there is an option to compute along-track distances
and use that as the independent variable for filtering.

# REQUIRED ARGUMENTS¶

**-F****type***width*[*modifier*]- Sets the filter
**type**. Choose among convolution and non-convolution filters. Append the filter code followed by the full filter*width*in same units as time column. By default we perform low-pass filtering; append**+h**to select high-pass filtering. Some filters allow for optional arguments and a modifier. Available convolution filter types are:(

**b**) Boxcar: All weights are equal.(

**c**) Cosine Arch: Weights follow a cosine arch curve.(

**g**) Gaussian: Weights are given by the Gaussian function.(

**f**) Custom: Instead of*width*give name of a one-column file with your own weight coefficients.Non-convolution filter types are:

(

**m**) Median: Returns median value.(

**p**) Maximum likelihood probability (a mode estimator): Return modal value. If more than one mode is found we return their average value. Append**+l**or**+u**if you rather want to return the lowermost or uppermost of the modal values.(

**l**) Lower: Return the minimum of all values.(

**L**) Lower: Return minimum of all positive values only.(

**u**) Upper: Return maximum of all values.(

**U**) Upper: Return maximum or all negative values only.Upper case type

**B**,**C**,**G**,**M**,**P**,**F**will use robust filter versions: i.e., replace outliers (2.5 L1 scale off median, using 1.4826 * median absolute deviation [MAD]) with median during filtering.In the case of

**L**|**U**it is possible that no data passes the initial sign test; in that case the filter will return 0.0.

# OPTIONAL ARGUMENTS¶

*table*- One or more ASCII (or binary, see
**-bi**[*ncols*][*type*]) data table file(s) holding a number of data columns. If no tables are given then we read from standard input.

**-D***increment**increment*is used when series is NOT equidistantly sampled. Then*increment*will be the abscissae resolution, i.e., all abscissae will be rounded off to a multiple of*increment*. Alternatively, resample data with sample1d.

**-E**- Include Ends of time series in output. Default loses half the filter-width of data at each end.

**-L***lack_width*- Checks for Lack of data condition. If input data has a gap exceeding
*width*then no output will be given at that point [Default does not check Lack].

**-N***t_col*- Indicates which column contains the independent variable (time). The
left-most column is # 0, the right-most is # (
*n_cols*- 1). [Default is 0].

**-Q***q_factor*- Assess Quality of output value by checking mean weight in convolution.
Enter
*q_factor*between 0 and 1. If mean weight <*q_factor*, output is suppressed at this point [Default does not check Quality].

**-S***symmetry_factor*- Checks symmetry of data about window center. Enter a factor between 0 and
1. If ( (abs(n_left - n_right)) / (n_left + n_right) ) >
*factor*, then no output will be given at this point [Default does not check Symmetry].

**-T**[*min/max*/]*inc*[**+e**|**+a**|**n**] |**-T***file*|*list*- Make evenly spaced time-steps from
*min*to*max*by*inc*[Default uses input times]. For details on array creation, see*Generate 1D Array*.

**-V**[*level*] (more ...)- Select verbosity level [c].

**-bi**[*ncols*][**t**] (more ...)- Select native binary format for primary input.

**-bo**[*ncols*][*type*] (more ...)- Select native binary output. [Default is same as input].

**-d**[**i**|**o**]*nodata*(more ...)- Replace input columns that equal
*nodata*with NaN and do the reverse on output.

**-e**[**~**]*"pattern"***|****-e**[**~**]/*regexp*/[**i**] (more ...)- Only accept data records that match the given pattern.

**-f**[**i**|**o**]*colinfo*(more ...)- Specify data types of input and/or output columns.

**-g**[**a**]**x**|**y**|**d**|**X**|**Y**|**D**|[*col*]**z***gap*[**u**][**+n**|**p**] (more ...)- Determine data gaps and line breaks.

**-h**[**i**|**o**][*n*][**+c**][**+d**][**+r***remark*][**+r***title*] (more ...)- Skip or produce header record(s).

**-i***cols*[**+l**][**+s***scale*][**+o***offset*][,*...*][,*t*[*word*]] (more ...)- Select input columns and transformations (0 is first column,
*t*is trailing text, append*word*to read one word only).

**-je**|**f**|**g**(more ...)- Determine how spherical distances are calculated.

**-o***cols*[,...][*t*[*word*]] (more ...)- Select output columns (0 is first column;
*t*is trailing text, append*word*to write one word only).

**-:**[**i**|**o**] (more ...)- Swap 1st and 2nd column on input and/or output.

**-^**or just**-**- Print a short message about the syntax of the command, then exits (NOTE:
on Windows just use
**-**). **-+**or just**+**- Print an extensive usage (help) message, including the explanation of any module-specific option (but not the GMT common options), then exits.
**-?**or no arguments- Print a complete usage (help) message, including the explanation of all options, then exits.
**--PAR**=*value*- Temporarily override a GMT default setting; repeatable. See /gmt.conf for parameters.

# UNITS¶

For map distance unit, append *unit* **d** for arc degree,
**m** for arc minute, and **s** for arc second, or **e** for meter
[Default], **f** for foot, **k** for km, **M** for statute mile,
**n** for nautical mile, and **u** for US survey foot. By default we
compute such distances using a spherical approximation with great circles
(**-jg**). You can use **-jf** to perform "Flat Earth"
calculations (quicker but less accurate) or **-je** to perform exact
geodesic calculations (slower but more accurate; see PROJ_GEODESIC for
method used).

# ASCII FORMAT PRECISION¶

The ASCII output formats of numerical data are controlled by
parameters in your gmt.conf file. Longitude and latitude are formatted
according to FORMAT_GEO_OUT, absolute time is under the control of
FORMAT_DATE_OUT and FORMAT_CLOCK_OUT, whereas general floating point values
are formatted according to FORMAT_FLOAT_OUT. Be aware that the format in
effect can lead to loss of precision in ASCII output, which can lead to
various problems downstream. If you find the output is not written with
enough precision, consider switching to binary output (**-bo** if
available) or specify more decimals using the FORMAT_FLOAT_OUT setting.

# GENERATE 1D ARRAY¶

Make an evenly spaced coordinate array from *min* to
*max* in steps of *inc*. Append **+b** if we should take log2
of *min* and *max* and build an equidistant log2-array using
*inc* integer increments in log2. Append **+l** if we should take
log10 of *min* and *max* and build an array where *inc* can
be 1 (every magnitude), 2, (1, 2, 5 times magnitude) or 3 (1-9 times
magnitude). For less than every magnitude, use a negative integer
*inc*. Append **+n** if *inc* is meant to indicate the number
of equidistant coordinates instead. Alternatively, give a *file* with
output coordinates in the first column, or provide a comma-separated
*list* of coordinates. If you only want a *single* value then you
must append a comma to distinguish the list from the setting of
*inc*.

If the module allows you to set up an absolute time series, append
a valid time unit from the list **y**ear, m**o**nth, **w**eek,
**d**ay, **h**our, **m**inute, and **s**econd to the given
increment; add **+t** to ensure time column (or use **-f**) Note: The
internal time unit is still controlled independently by TIME_UNIT. Some
modules allow for **+a** which will paste the coordinate array to the
output table.

Likewise, if the module allows you to set up a spatial distance
series (with distance computed from the first two data columns), specify the
increment as *inc*[*unit*] with a geospatial distance unit from
the list **d**egree (arc), **m**inute (arc), **s**econd (arc),
m**e**ter, **f**oot, **k**ilometer, **M**iles (statute),
**n**autical miles, or s**u**rvey foot; see **-j** for calculation
mode. For Cartesian distances, you must use the special unit **c**.

Finally, if you are only providing an increment and obtain
*min* and *max* from the data, then it is possible (*max* -
*min*)/*inc* is not an integer, as required. If so then *inc*
will be adjusted to accordingly. Alternatively, append **+e** to keep
*inc* exact and adjust *max* instead.

# EXAMPLES¶

To filter the data set in the file cruise.gmtd containing evenly spaced gravity, magnetics, topography, and distance (in m) with a 10 km Gaussian filter, removing outliers, and output a filtered value every 2 km between 0 and 100 km:

gmt filter1d cruise.gmtd -T0/1.0e5/2000 -FG10000 -N3 -V > filtered_cruise.gmtd

Data along track often have uneven sampling and gaps which we do not want to interpolate using sample1d. To find the median depth in a 50 km window every 25 km along the track of cruise v3312, stored in v3312.dt, checking for gaps of 10km and asymmetry of 0.3:

gmt filter1d v3312.dt -FM50 -T0/100000/25 -L10 -S0.3 > v3312_filt.dt

To smooth a noisy geospatial track using a Gaussian filter of full-width 100 km and not shorten the track, and add the distances to the file, use

gmt filter1d track.txt -Tk+a -E -Fg200 > smooth_track.txt

# SEE ALSO¶

gmt , sample1d , splitxyz

# COPYRIGHT¶

2019, The GMT Team

September 7, 2019 | 6.0.0rc4 |