Linux and UNIX Man Pages

Linux & Unix Commands - Search Man Pages

pdl::linfit(3) [redhat man page]

Linfit(3)						User Contributed Perl Documentation						 Linfit(3)

NAME
PDL::Fit::Linfit - routines for fitting data with linear combinations of functions. DESCRIPTION
This module contains routines to perform general curve-fits to a set (linear combination) of specified functions. Given a set of Data: (y0, y1, y2, y3, y4, y5, ...ynoPoints-1) The fit routine tries to model y as: y' = beta0*x0 + beta1*x1 + ... beta_noCoefs*x_noCoefs Where x0, x1, ... x_noCoefs, is a set of functions (curves) that the are combined linearly using the beta coefs to yield an approximation of the input data. The Sum-Sq error is reduced to a minimum in this curve fit. Inputs: $data This is your data you are trying to fit. Size=n $functions 2D array. size (n, noCoefs). Row 0 is the evaluation of function x0 at all the points in y. Row 1 is the evaluation of of function x1 at all the points in y, ... etc. Example of $functions array Structure: $data is a set of 10 points that we are trying to model using the linear combination of 3 functions. $functions = ( [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ], # Constant Term [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ], # Linear Slope Term [ 0, 2, 4, 9, 16, 25, 36, 49, 64, 81] # quadradic term ) SYNOPSIS
$yfit = linfit1d $data, $funcs FUNCTIONS
linfit1d 1D Fit linear combination of supplied functions to data using min chi^2 (least squares). Usage: ($yfit, [$coeffs]) = linfit1d [$xdata], $data, $fitFuncs, [Options...] Signature: (xdata(n); ydata(n); $fitFuncs(n,order); [o]yfit(n); [o]coeffs(order)) Uses a standard matrix inversion method to do a least squares/min chi^2 fit to data. Returns the fitted data and optionally the coefficients. One can thread over extra dimensions to do multiple fits (except the order can not be threaded over - i.e. it must be one fixed set of fit functions "fitFuncs". The data is normalised internally to avoid overflows (using the mean of the abs value) which are common in large polynomial series but the returned fit, coeffs are in unnormalised units. # Generate data from a set of functions $xvalues = sequence(100); $data = 3*$xvalues + 2*cos($xvalues) + 3*sin($xvalues*2); # Make the fit Functions $fitFuncs = cat $xvalues, cos($xvalues), sin($xvalues*2); # Now fit the data, Coefs should be the coefs in the linear combination # above: 3,2,3 ($yfit, $coeffs) = linfit1d $data,$fitFuncs; Options: Weights Weights to use in fit, e.g. 1/$sigma**2 (default=1) perl v5.8.0 2000-12-06 Linfit(3)

Check Out this Related Man Page

GRDTREND(l)															       GRDTREND(l)

NAME
grdtrend - Fit and/or remove a polynomial trend in a grd file SYNOPSIS
grdtrend grdfile -Nn_model[r] [ -Ddiff.grd ] [ -Ttrend.grd ] [ -V ] [ -Wweight.grd ] DESCRIPTION
grdtrend reads a 2-D gridded 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 -Nn_model, the number of model parameters to use; thus, -N4 fits a bilinear trend, -N6 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. No space between the option flag and the associated arguments. grdfile The name of a 2-D binary grd file. -N [r]n_model sets the number of model parameters to fit. Prepend r for robust fit. OPTIONS
No space between the option flag and the associated arguments. -D Write the difference (input data - trend) to the file diff.grd. -T Write the fitted trend to the file trend.grd. -V Selects verbose mode, which will send progress reports to stderr [Default runs "silently"]. -W If weight.grd 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.grd. 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 descrip- tion above is to allow the user to match -N with the order of the polynomial surface. EXAMPLES
To remove a planar trend from hawaii_topo.grd and write result in hawaii_residual.grd, try grdtrend hawaii_topo.grd -N3 -Dhawaii_residual.grd To do a robust fit of a bicubic surface to hawaii_topo.grd, writing the result in hawaii_trend.grd and the weights used in hawaii_weight.grd, and reporting the progress, try grdtrend hawaii_topo.grd -Nr10 -Thawaii_trend.grd -Whawaii_weight.grd -V SEE ALSO
gmt(1gmt), grdfft(1gmt), grdfilter(1gmt) 1 Jan 2004 GRDTREND(l)
Man Page