Mercurial > dive4elements > river
diff flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/fixings/Fitting.java @ 3096:d7b0f52d6d04
FixA: Calculate Delta W(t) for reference points, too.
flys-artifacts/trunk@4695 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Mon, 18 Jun 2012 16:00:19 +0000 |
parents | 0ace00c0c12a |
children | cbf308f5c41b |
line wrap: on
line diff
--- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/fixings/Fitting.java Mon Jun 18 14:37:10 2012 +0000 +++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/fixings/Fitting.java Mon Jun 18 16:00:19 2012 +0000 @@ -25,26 +25,26 @@ private static Logger log = Logger.getLogger(Fitting.class); /** Use instance of this factory to find meta infos for outliers. */ - public interface QWFactory { + public interface QWDFactory { - QW create(double q, double w); + QWD create(double q, double w); } // interface QWFactory - public static final QWFactory QW_FACTORY = new QWFactory() { + public static final QWDFactory QWD_FACTORY = new QWDFactory() { @Override - public QW create(double q, double w) { - return new QW(q, w); + public QWD create(double q, double w) { + return new QWD(q, w); } }; protected boolean checkOutliers; protected Function function; - protected QWFactory qwFactory; + protected QWDFactory qwdFactory; protected double chiSqr; protected double [] parameters; protected ArrayList<QW> removed; - protected QW [] referenced; + protected QWD [] referenced; public Fitting() { @@ -52,21 +52,21 @@ } public Fitting(Function function) { - this(function, QW_FACTORY); + this(function, QWD_FACTORY); } - public Fitting(Function function, QWFactory qwFactory) { - this(function, qwFactory, false); + public Fitting(Function function, QWDFactory qwdFactory) { + this(function, qwdFactory, false); } public Fitting( - Function function, - QWFactory qwFactory, - boolean checkOutliers + Function function, + QWDFactory qwdFactory, + boolean checkOutliers ) { this(); this.function = function; - this.qwFactory = qwFactory; + this.qwdFactory = qwdFactory; this.checkOutliers = checkOutliers; } @@ -109,8 +109,8 @@ return removed.toArray(new QW[removed.size()]); } - public QW [] referencedToArray() { - return referenced != null ? (QW [])referenced.clone() : null; + public QWD [] referencedToArray() { + return referenced != null ? (QWD [])referenced.clone() : null; } public double getMaxQ() { @@ -153,6 +153,8 @@ List<IndexedValue> inputs = new ArrayList<IndexedValue>(xs.size()); + de.intevation.flys.artifacts.math.Function instance = null; + for (;;) { CurveFitter cf = new CurveFitter(lmo); @@ -175,8 +177,7 @@ inputs.clear(); // This is the paraterized function for a given km. - de.intevation.flys.artifacts.math.Function instance = - function.instantiate(parameters); + instance = function.instantiate(parameters); for (int i = 0, N = xs.size(); i < N; ++i) { double y = instance.value(xs.getQuick(i)); @@ -197,22 +198,24 @@ for (int i = rem.size()-1; i >= 0; --i) { int idx = rem.get(i).getIndex(); removed.add( - qwFactory.create( + qwdFactory.create( xs.getQuick(idx), ys.getQuick(idx))); xs.remove(idx); ys.remove(idx); } } - referenced = new QW[xs.size()]; + referenced = new QWD[xs.size()]; for (int i = 0; i < referenced.length; ++i) { - QW qw = qwFactory.create(xs.getQuick(i), ys.getQuick(i)); + QWD qwd = qwdFactory.create(xs.getQuick(i), ys.getQuick(i)); - if (qw == null) { + if (qwd == null) { log.warn("QW creation failed!"); } else { - referenced[i] = qw; + referenced[i] = qwd; + double dw = (qwd.getW() - instance.value(qwd.getQ()))*100.0; + qwd.setDeltaW(dw); } }