Linfit(3pm)

πŸ“¦
version 2.101 Β· 2 versions
, in ubuntu stonking

πŸ’– Linfit β€” PDL::Fit::Linfit πŸ’–

okay bestie, so this little cutie lives in the User Contributed Perl Documentation section of the manual, and she's here to help you fit curves. no cap. ✨

🌸 NAME 🌸

PDL::Fit::Linfit β€” routines for fitting data with linear combinations of functions. it's giving "math but make it fashion" πŸ’…


πŸ¦‹ DESCRIPTION πŸ¦‹

This module is literally a whole collection of routines that do general curve-fits onto a set (aka a linear combination) of the functions you hand it. obsessed.

So picture this: you've got a set of Data:

(y0, y1, y2, y3, y4, y5, ...ynoPoints-1)

and the fit routine is gonna try 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 get combined linearly using the beta coefs to yield an approximation of the input data. queen behaviour.

The Sum-Sq error gets reduced to a minimum in this curve fit. slay. πŸ”₯

✨ Inputs ✨

  • $data β€” this is your data you're trying to fit. Size=n.
  • $functions β€” a 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). main character energy fr fr.

Usage:

($yfit, [$coeffs]) = linfit1d [$xdata], $data, $fitFuncs, [Options...]

Signature:

(xdata(n); ydata(n); $fitFuncs(n,order); [o]yfit(n); [o]coeffs(order))

She uses a standard matrix inversion method to do a least squares/min chi^2 fit to data. iconic.

Returns the fitted data and optionally the coefficients. 🫢

One can broadcast over extra dimensions to do multiple fits (except the order can not be broadcasted over β€” i.e. it must be one fixed set of fit functions fitFuncs). no notes, that's just how she is.

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. so don't come for her about the units bestie πŸ’€

 # 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)

and that's the whole page, bestie β€” bestie-certified, no cap. πŸŽ€

peace out from perl v5.42.3, dated 2026-08-21 β€” she said periodt. πŸ’…βœ¨

πŸ“¦ where this page comes from