Mercurial > dive4elements > river
diff flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/fixings/Fitting.java @ 3565:b136113dad53
FixA: Only evict only one(!) data point as outlier before recalculating the function.
flys-artifacts/trunk@5163 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Tue, 31 Jul 2012 16:46:36 +0000 |
parents | 1b9f791937c3 |
children | e727e3ebdf85 |
line wrap: on
line diff
--- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/fixings/Fitting.java Tue Jul 31 16:14:17 2012 +0000 +++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/fixings/Fitting.java Tue Jul 31 16:46:36 2012 +0000 @@ -1,8 +1,5 @@ package de.intevation.flys.artifacts.model.fixings; -import de.intevation.flys.artifacts.math.Outlier.IndexedValue; -import de.intevation.flys.artifacts.math.Outlier.Outliers; - import de.intevation.flys.artifacts.math.Outlier; import de.intevation.flys.artifacts.math.fitting.Function; @@ -157,7 +154,7 @@ return false; } - List<IndexedValue> inputs = new ArrayList<IndexedValue>(xs.size()); + List<Double> inputs = new ArrayList<Double>(xs.size()); de.intevation.flys.artifacts.math.Function instance = null; @@ -204,27 +201,23 @@ for (int i = 0, N = xs.size(); i < N; ++i) { double y = instance.value(xs.getQuick(i)); if (Double.isNaN(y)) { - continue; + y = Double.MAX_VALUE; } - inputs.add(new IndexedValue(i, ys.getQuick(i) - y)); + inputs.add(Double.valueOf(ys.getQuick(i) - y)); } - Outliers outliers = Outlier.findOutliers(inputs); + Integer outlier = Outlier.findOutlier(inputs); - if (!outliers.hasOutliers()) { + if (outlier == null) { break; } - List<IndexedValue> rem = outliers.getRemoved(); - - for (int i = rem.size()-1; i >= 0; --i) { - int idx = rem.get(i).getIndex(); - removed.add( - qwdFactory.create( - xs.getQuick(idx), ys.getQuick(idx))); - xs.remove(idx); - ys.remove(idx); - } + int idx = outlier.intValue(); + removed.add( + qwdFactory.create( + xs.getQuick(idx), ys.getQuick(idx))); + xs.remove(idx); + ys.remove(idx); } StandardDeviation stdDev = new StandardDeviation();