.. index:: ! grdtrend ******** grdtrend ******** .. only:: not man grdtrend - Fit trend surface to grids and compute residuals `Synopsis` ---------- .. include:: common_SYN_OPTs.rst_ **grdtrend** *grdfile* |-N|\ *n\_model*\ [**+r**] [ |-D|\ *diff.nc* ] [ |SYN_OPT-R| ] [ |-T|\ *trend.nc* ] [ |-W|\ *weight.nc* ] |No-spaces| Description ----------- **grdtrend** reads a 2-D grid file and fits a low-order polynomial trend to these data by [optionally weighted] least-squares. The trend surface is defined by: m1 + m2\*x + m3\*y + m4\*x\*y + m5\*x\*x + m6\*y\*y + m7\*x\*x\*x + m8\*x\*x\*y + m9\*x\*y\*y + m10\*y\*y\*y. The user must specify **-N**\ *n\_model*, the number of model parameters to use; thus, **-N**\ *3* fits a bilinear trend, **-N**\ *6* a quadratic surface, and so on. Optionally, append **+r** to the **-N** option to perform a robust fit. In this case, the program will iteratively reweight the data based on a robust scale estimate, in order to converge to a solution insensitive to outliers. This may be handy when separating a "regional" field from a "residual" which should have non-zero mean, such as a local mountain on a regional surface. If data file has values set to NaN, these will be ignored during fitting; if output files are written, these will also have NaN in the same locations. Required Arguments ------------------ *grdfile* The name of a 2-D binary grid file. .. _-N: **-N**\ *n\_model*\ [**+r**\ ] *n\_model* sets the number of model parameters to fit. Append **+r** for robust fit. Optional Arguments ------------------ **-D**\ *diff.nc* Write the difference (input data - trend) to the file *diff.nc*. .. |Add_-R| replace:: Using the **-R** option will select a subsection of the input grid. If this subsection exceeds the boundaries of the grid, only the common region will be extracted. .. include:: explain_-R.rst_ .. _-T: **-T**\ *trend.nc* Write the fitted trend to the file *trend.nc*. .. _-V: .. |Add_-V| unicode:: 0x20 .. just an invisible code .. include:: explain_-V.rst_ .. _-W: **-W**\ *weight.nc* If *weight.nc* exists, it will be read and used to solve a weighted least-squares problem. [Default: Ordinary least-squares fit.] If the robust option has been selected, the weights used in the robust fit will be written to *weight.nc*. .. include:: explain_help.rst_ Remarks ------- The domain of x and y will be shifted and scaled to [-1, 1] and the basis functions are built from Legendre polynomials. These have a numerical advantage in the form of the matrix which must be inverted and allow more accurate solutions. NOTE: The model parameters listed with **-V** are Legendre polynomial coefficients; they are not numerically equivalent to the m#s in the equation described above. The description above is to allow the user to match **-N** with the order of the polynomial surface. See :doc:`grdmath` if you need to evaluate the trend using the reported coefficients. .. include:: explain_grd_inout_short.rst_ Examples -------- To remove a planar trend from hawaii_topo.nc and write result in hawaii_residual.nc: :: gmt grdtrend hawaii_topo.nc -N3 -Dhawaii_residual.nc To do a robust fit of a bicubic surface to hawaii_topo.nc, writing the result in hawaii_trend.nc and the weights used in hawaii_weight.nc, and reporting the progress: :: gmt grdtrend hawaii_topo.nc -N10+r -Thawaii_trend.nc -Whawaii_weight.nc -V See Also -------- :doc:`gmt`, :doc:`grdfft`, :doc:`grdfilter`, :doc:`grdmath`