Example usage for org.apache.commons.math3.fitting WeightedObservedPoint getY

List of usage examples for org.apache.commons.math3.fitting WeightedObservedPoint getY

Introduction

In this page you can find the example usage for org.apache.commons.math3.fitting WeightedObservedPoint getY.

Prototype

public double getY() 

Source Link

Document

Gets the observed value of the function at x.

Usage

From source file:edu.ucsf.valelab.saim.calculations.TestSaimErrorFunction.java

public void test() throws Exception {
    SaimData data = new SaimData();

    data.wavelength_ = 488.0;/*from w  ww .jav a  2 s  .c om*/
    data.nSample_ = 1.36;
    data.dOx_ = 500.0;
    data.A_ = 1000.0;
    data.B_ = 5000.0;
    data.heights_ = new double[] { 75.0 };

    double maxError = 0.0000000001;

    // make a collection of "observed" points
    ArrayList<WeightedObservedPoint> points = new ArrayList<WeightedObservedPoint>();
    for (int i = -50; i <= 50; i += 1) {
        double angle = Math.toRadians(i);
        double I = data.A_
                * SaimCalc.fieldStrength(data.wavelength_, angle, data.nSample_, data.dOx_, data.heights_[0])
                + data.B_;
        WeightedObservedPoint point = new WeightedObservedPoint(1.0, angle, I);
        points.add(point);
    }
    // calculate the error with these ideal points (shoudle be 0)
    SaimErrorFunction sef = new SaimErrorFunction(data, points);
    double[] parameters = { data.A_, data.B_, data.heights_[0] };
    double error = sef.value(parameters);

    System.out.println("SaimError error: " + error);
    assertEquals(0.0, error, maxError);

    // now add 1 to all the data points.  Error should be number of data points
    ArrayList<WeightedObservedPoint> newPoints = new ArrayList<WeightedObservedPoint>();
    for (WeightedObservedPoint point : points) {
        newPoints.add(new WeightedObservedPoint(1.0, point.getX(), point.getY() + 1.0));
    }
    SaimErrorFunction sef2 = new SaimErrorFunction(data, newPoints);
    error = sef2.value(parameters);

    System.out.println("SaimError error: " + error);
    assertEquals(points.size(), error, maxError);

}

From source file:org.micromanager.asidispim.fit.GaussianWithOffsetCurveFitter.java

/** 
 * //from  www .j  a v a 2s .co  m
* @param observations
* 
* @return  */
@Override
protected LeastSquaresProblem getProblem(Collection<WeightedObservedPoint> observations) {

    // Prepare least-squares problem.
    final int len = observations.size();
    final double[] target = new double[len];
    final double[] weights = new double[len];

    int i = 0;
    for (WeightedObservedPoint obs : observations) {
        target[i] = obs.getY();
        weights[i] = obs.getWeight();
        ++i;
    }

    final AbstractCurveFitter.TheoreticalValuesFunction model = new AbstractCurveFitter.TheoreticalValuesFunction(
            FUNCTION, observations);

    final double[] startPoint = initialGuess != null ? initialGuess :
    // Compute estimation.
            new ParameterGuesser(observations).guess();

    // Return a new least squares problem set up to fit a Gaussian curve to the
    // observed points.
    return new LeastSquaresBuilder().maxEvaluations(Integer.MAX_VALUE).maxIterations(maxIter).start(startPoint)
            .target(target).weight(new DiagonalMatrix(weights))
            .model(model.getModelFunction(), model.getModelFunctionJacobian()).build();

}

From source file:org.orekit.utils.SecularAndHarmonic.java

/** Fit parameters.
 * @see #getFittedParameters()/*from  www. j  a v  a 2  s  .c  om*/
 */
public void fit() {

    final AbstractCurveFitter fitter = new AbstractCurveFitter() {
        /** {@inheritDoc} */
        @Override
        protected LeastSquaresProblem getProblem(final Collection<WeightedObservedPoint> observations) {
            // Prepare least-squares problem.
            final int len = observations.size();
            final double[] target = new double[len];
            final double[] weights = new double[len];

            int i = 0;
            for (final WeightedObservedPoint obs : observations) {
                target[i] = obs.getY();
                weights[i] = obs.getWeight();
                ++i;
            }

            final AbstractCurveFitter.TheoreticalValuesFunction model = new AbstractCurveFitter.TheoreticalValuesFunction(
                    new LocalParametricFunction(), observations);

            // build a new least squares problem set up to fit a secular and harmonic curve to the observed points
            return new LeastSquaresBuilder().maxEvaluations(Integer.MAX_VALUE).maxIterations(Integer.MAX_VALUE)
                    .start(fitted).target(target).weight(new DiagonalMatrix(weights))
                    .model(model.getModelFunction(), model.getModelFunctionJacobian()).build();

        }
    };

    fitted = fitter.fit(observedPoints);

}