diff flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/WQKms.java @ 675:8b0152363bdb

Added methods to remove NaN values. flys-artifacts/trunk@2099 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Fri, 10 Jun 2011 10:10:04 +0000
parents 5606ba4139e0
children 19a3185822a4
line wrap: on
line diff
--- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/WQKms.java	Fri Jun 10 09:19:27 2011 +0000
+++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/WQKms.java	Fri Jun 10 10:10:04 2011 +0000
@@ -53,6 +53,36 @@
         this.kms = new TDoubleArrayList(capacity);
     }
 
+    public static void removeNaNs(TDoubleArrayList [] arrays) {
+
+        int dest = 0;
+
+        int A = arrays.length;
+        int N = arrays[0].size();
+
+        OUTER: for (int i = 0; i < N; ++i) {
+            for (int j = 0; j < A; ++j) {
+                TDoubleArrayList a = arrays[j];
+                double v = a.getQuick(i);
+                if (Double.isNaN(v)) {
+                    continue OUTER;
+                }
+                a.setQuick(dest, v);
+            }
+            ++dest;
+        }
+
+        if (dest < N) {
+            for (int i = 0; i < A; ++i) {
+                arrays[i].remove(dest, N-dest);
+            }
+        }
+    }
+
+    public void removeNaNs() {
+        removeNaNs(new TDoubleArrayList [] { w, q, kms });
+    }
+
 
     public WQKms(double[] kms, double[] qs, double[] ws) {
         this(kms, qs, ws, "");
@@ -107,15 +137,15 @@
      * @return a triple of [W, Q, Kms] in dst.
      */
     public double[] get(int idx, double [] dst) {
-        dst[0] = w  .get(idx);
-        dst[1] = q  .get(idx);
-        dst[2] = kms.get(idx);
+        dst[0] = w  .getQuick(idx);
+        dst[1] = q  .getQuick(idx);
+        dst[2] = kms.getQuick(idx);
         return dst;
     }
 
 
     public double getKms(int idx) {
-        return kms.get(idx);
+        return kms.getQuick(idx);
     }
 
 

http://dive4elements.wald.intevation.org