qwtspline(3)
NAME
QwtSpline
SYNOPSIS
Detailed Description
A class for spline interpolation.
The QwtSpline class is used for cubical spline interpolation. Two types
of splines, natural and periodic, are supported.
Usage:.RS 4
- 1. First call QwtSpline::recalc() to determine the spline coefficients
- for a tabulated function y(x).
- 2. After the coefficients have been set up, the interpolated function
value for an argument x can be determined by calling
QwtSpline::value(). - In order to save storage space, QwtSpline can be advised not to buffer
the contents of x and y. This means that the arrays have to remain
valid and unchanged for the interpolation to work properly. This can be achieved by calling QwtSpline::copyValues().
Example:
- #include<qwt_spline.h>
#include<iostream.h>
QwtSpline s;
double x[30], y[30], xInter[300], yInter[300];
int i;
for(i=0;i<30;i++) // fill up x[] and y[]
cin >> x[i] >> y[i];
if (s.recalc(x,y,30,0) == 0) // build natural spline
{
for(i=0;i<300;i++) // interpolate
{ - xInter[i] = x[0] + double(i) * (x[29] - x[0]) / 299.0;
yInter[i] = s.value( xInter[i] ); - }
- do_something(xInter, yInter, 300);
- }
- else
- cerr << 'Uhhh...0;
- Definition at line 63 of file qwt_spline.h.
Public Member Functions
QwtSpline ()
~QwtSpline ()
double value (double x) const
int recalc (double *x, double *y, int n, int periodic=0)
int recalc (const QwtArray< double > &x, const QwtArray< double > &y, int periodic=0) - void copyValues (int tf=1)
Constructor & Destructor Documentation
- QwtSpline::QwtSpline ()
- CTOR.
Definition at line 31 of file qwt_spline.cpp. - QwtSpline::~QwtSpline ()
DTOR.
Definition at line 68 of file qwt_spline.cpp.
Member Function Documentation
- void QwtSpline::copyValues (int tf = 1)
- Advise recalc() to buffer the tabulated function or switch off internal
buffering.
By default, QwtSpline maintains an internal copy of the tabulated
function given as *x and *y arguments of QwtSpline::recalc(). If QwtSpline::copyValues() is called with zero argument, subsequent calls to QwtSpline::recalc() will not buffer these values anymore and just store the pointers instead. The QwtSpline::value() function will then silently assume that these pointers remained valid and that the
contents of the arrays have not been changed since the last
QwtSpline::recalc().
If called with no or nonzero argument, any following
QwtSpline::recalc() calls will use the internal buffer. Parameters:
tf if nonzero, the function table will be buffered - Warning:
copyValues() resets all the contents of QwtSpline. A subsequent recalc() will be necessary. - Definition at line 61 of file qwt_spline.cpp.
- int QwtSpline::recalc (const QwtArray< double > & x, const QwtArray< double
> & y, int periodic = 0)
re-calculate the spline coefficients
Depending on the value of periodic, this function will determine the coefficients for a natural or a periodic spline and store them
internally. It also buffers the values of x and y, which are needed for the interpolation (See QwtSpline::value()). Parameters:
x QwtArray<double> of points
y QwtArray<double> of points
periodic if non-zero, calculate periodic spline - Returns:
0 successful
Qwt::ErrMono<dd>Sequence of x values is not strictly monotone increasing
Qwt::ErrNoMem<dd>Couldn't allocate memory - Warning:
The sequence of x (but not y) values has to be strictly monotone
increasing, which means x[0] < x[1] < .... < x[n-1]. If this is not the case, the function will return an error. - Definition at line 206 of file qwt_spline.cpp.
References recalc(). - int QwtSpline::recalc (double * x, double * y, int n, int periodic = 0)
re-calculate the spline coefficients
Depending on the value of periodic, this function will determine the coefficients for a natural or a periodic spline and store them
internally. By default, it also buffers the values of x and y, which
are needed for the interpolation (See QwtSpline::value()). In order to save memory, this last behaviour may be changed with the
QwtSpline::copyValues() function. Parameters:
x .br y points
n number of points
periodic if non-zero, calculate periodic spline - Returns:
0 successful
Qwt::ErrMono<dd>Sequence of x values is not strictly monotone increasing
Qwt::ErrNoMem<dd>Couldn't allocate memory - Warning:
The sequence of x (but not y) values has to be strictly monotone
increasing, which means x[0] < x[1] < .... < x[n-1]. If this is not the case, the function will return an error. - Definition at line 127 of file qwt_spline.cpp.
Referenced by QwtCurve::drawSpline(), and recalc(). - double QwtSpline::value (double x) const
Calculate the interpolated function value corresponding to a given
argument x. Definition at line 18 of file qwt_spline.cpp.
Referenced by QwtCurve::drawSpline().
Author
- Generated automatically by Doxygen for Qwt User's Guide from the source
code.