curfit -- fit a curve to a list or an image section
- The data to be fit. May be an image section, STDIN or a list of file names.
- function = legendre
- The type of function with which to fit the data. Choices are legendre, chebyshev, spline1 (linear spline) or spline3 (cubic spline).
- order = 4
- The order of the fit or number of spline pieces.
- weighting = uniform
- The type of weighting for the fit. The options are:
- The weight w = 1.0. This option may be used for both list input and image input.
- The weights are supplied by the user. This option may be used for list input only.
- The weight w = 1.0 / y. This option can be used for both list and image data.
- The user supplies the sigmay for each point and w = 1.0 / sigmay ** 2. This option may be used for list input only.
- interactive = yes
- If interactive is set to yes, a plot of the fit is drawn and the cursor is available for interactively examining and adjusting the fit.
- axis = 1
- If input names an image or image section, this parameter specifies the axis along which the image is projected for fitting.
- listdata = no
- If listdata is set to yes, the only printed output will be the calculated values for the X,Y pairs. This is useful as input to graph or some other list oriented program.
- verbose = no
- If verbose is set to yes, the fitted (X,Y) pairs are listed in addition to the default output of filename, function type, order, rejection parameters, coefficients and their errors.
- power = no
- If power is set to yes, the coefficients of the legendre or chebyshev polynomials will be converted to power series coefficients.
- calctype = "double"
- Calculation datatype. The two datatypes are "real" (single precision) and "double" (double precision).
- device = "stdgraph"
- The output device for interactive graphics.
- cursor = "stdgcur"
- The source of graphics cursor input.
A curve is fit to data read from either an image section or a list. The type of curve is set by the function parameter as either a legendre polynomial, chebyshev polynomial, linear spline or cubic spline, with the order of the fit (or number of spline pieces) set by order . If data is read from an image, the axis parameter is used to reduce the dimensionality of the image; it specifies the axis along which the image is projected. For example, when axis = 1, the image is compressed to a column. Axis = 2 would project the image along a line; axis = 3 indicates projection in the z direction, etc.
The input data must be ordered in x because of a restriction in the interactive plotting package. If the input is from a list, the data are sorted prior to fitting; image input data are assumed to be ordered in x and are not explicitly sorted by curfit .
If the input is from a list the user may specify a set of weights, weighting = user or a set of errors, weighting = instrumental. An additional weighting option weighting = statistical can be used for both list and image data. The default is weighting = uniform.
When interactive = yes, the curve is plotted and cursor commands allow for interactive examining and adjustment of the fit. The full range of interactive cursor commands is available including those for changing the function type, order, and rejection criteria, and examining the residuals.
The final fit parameters are written to STDOUT with the format controlled by parameters verbose and listdata . By default, the function type, order, and resulting chi-square are printed as well as the coefficients and their standard deviations. If verbose is set to yes, a list of X, Y_calculated, Y_input, and W_input is also printed. If listdata is set to yes, the only printed output will be a listing of X, Yc, Y and W. This provides a list suitable as input to graph or any other list oriented utility. Setting listdata to yes overrides the verbose option.
When power = yes, the coefficients are converted to power series coefficients of the form a0 + a1*X + a2*X**2 +a3*X**3 .... Only legendre and chebyshev coefficients are converted; a conversion of spline coefficients is meaningless. Also, errors in the coefficients are not converted.
The user has a choice of single or double precision calculations. Generally double precisions is used since the calculation time is only slightly longer. The single precision calculation is used in many other tasks which do many fits. This task provides a test tool to compare the results between the two levels of precision.
1. The x,y pairs in file test.data are interactively fit with a fourth order legendre polynomial. The printed output is shown.
cl> curfit test.data
NOAO/IRAF V2.0 Hammond@lyra Fri 11:45:41 13-Dec-85 file = test.data function = legendre grow = 0. naverage = 1 order = 4 low_reject = 0., high_reject = 0. niterate = 1 sample = * total points = 8 sample points = 8 nrejected = 0 deleted = 0 square root of reduced chi square = 3.008706E-6 coefficent error 1 2.633E1 1.098E-6 2 3.150E1 1.820E-6 3 8.167E0 1.896E-6 4 -1.621E-6 2.117E-62. Fit a cubic spline to the last 12 columns of image "m74".
cl> curfit m74[501:512,1:512] axis=2 func=spline3 order=5
3. Use curfit as a filter to overplot a smoothed curve to an existing plot of the data points. The command line for graph is shown as well as the curfit command. Note the interactive flag for curfit is turned off.
cl> graph points.list point+ mark=box wx1=.13 xlab="X VALUES"\ >>> ylab="Y VALUES" title="Legendre fit to points.list"
cl> type points.list | curfit list+ inter- | graph append+