package jsci.maths.wavelet.splines;
import jsci.maths.*;
import jsci.maths.wavelet.*;
/****************************************
* This class is used to generate linear
* splines to be used as wavelets or related
* functions. It can also be used for basic
* interpolation.
* @author Daniel Lemire
*****************************************/
public class LinearSpline extends Spline implements Filter, Cloneable {
protected final static int filtretype=1;
private double[] vecteur;
static final double[] vg={1/2d,1d,1/2d};
static final double[] v0={1d,1/2d};
/****************************************
* This method is used to compute
* how the number of scaling functions
* changes from on scale to the other.
* Basically, if you have k scaling
* function and a Filter of type t, you'll
* have 2*k+t scaling functions at the
* next scale (dyadic case).
* Notice that this method assumes
* that one is working with the dyadic
* grid while the method "previousDimension"
* define in the interface "Filter" doesn't.
******************************************/
public int getFilterType () {
return(filtretype);
}
/*******************************
* Return a String representation
* of the object
********************************/
public String toString() {
return(ArrayMath.toString(vecteur));
}
/*****************************************
* Check if another object is equal to this
* LinearSpline object
******************************************/
public boolean equals(Object a) {
if(a!=null && (a instanceof LinearSpline) && vecteur.length==((LinearSpline)a).dimension()) {
LinearSpline iv=(LinearSpline)a;
for(int i=0;ivecteur.length-1)) {
throw new IllegalArgumentException("Incorrect parameter : "+i+", "+vecteur.length);
}
return(vecteur[i]);
}
/*********************************************
* Set a particular value
* @param i position (knot)
* @param d value
* @exception IllegalArgumentException if the parameter i is negative
**********************************************/
public void setValue(int i, double d) {
if (i<0) {
throw new IllegalArgumentException("The parameter must be positive: "+i);
}
vecteur[i]=d;
}
/*********************************************
* Set the sampled values of the function
* to the specified array
**********************************************/
public void setValues(double[] v) {
vecteur=v;
}
/*********************************************
* compute the derivative of the function -
* useful for numerical analysis
**********************************************/
public PiecewiseConstant derive() {
return(this.derive(0,1));
}
/*********************************************
* compute the derivative of the function -
* useful for numerical analysis
* @param a left boundary of the interval
* @param b right boundary of the interval
**********************************************/
public PiecewiseConstant derive(double a, double b) {
double[] v=new double[vecteur.length-1];
for(int i=0;i
Ads help maintain this website.