summaryrefslogtreecommitdiff
path: root/src/de/lmu/ifi/dbs/elki/math/scales/Scales.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/de/lmu/ifi/dbs/elki/math/scales/Scales.java')
-rw-r--r--src/de/lmu/ifi/dbs/elki/math/scales/Scales.java43
1 files changed, 25 insertions, 18 deletions
diff --git a/src/de/lmu/ifi/dbs/elki/math/scales/Scales.java b/src/de/lmu/ifi/dbs/elki/math/scales/Scales.java
index edad211d..097b6fce 100644
--- a/src/de/lmu/ifi/dbs/elki/math/scales/Scales.java
+++ b/src/de/lmu/ifi/dbs/elki/math/scales/Scales.java
@@ -26,46 +26,53 @@ package de.lmu.ifi.dbs.elki.math.scales;
import de.lmu.ifi.dbs.elki.data.NumberVector;
import de.lmu.ifi.dbs.elki.database.ids.DBIDIter;
import de.lmu.ifi.dbs.elki.database.relation.Relation;
+import de.lmu.ifi.dbs.elki.database.relation.RelationUtil;
import de.lmu.ifi.dbs.elki.math.DoubleMinMax;
-import de.lmu.ifi.dbs.elki.utilities.DatabaseUtil;
import de.lmu.ifi.dbs.elki.utilities.exceptions.AbortException;
/**
- * Scales helper class.
- * Currently, this will just compute a linear scale for each axis.
- * It is planned to add functionality to include some analysis to
- * be able to automatically choose log scales when appropriate.
+ * Scales helper class. Currently, this will just compute a linear scale for
+ * each axis. It is planned to add functionality to include some analysis to be
+ * able to automatically choose log scales when appropriate.
*
* @author Erich Schubert
- *
+ *
* @apiviz.has LinearScale oneway - - computes
*/
-public class Scales {
+public final class Scales {
+ /**
+ * Fake constructor.
+ */
+ private Scales() {
+ // Do not instantiate.
+ }
+
/**
* Compute a linear scale for each dimension.
*
* @param <O> vector type
* @param db Database
- * @return Scales, indexed starting with 0 (like Vector, not database objects!)
+ * @return Scales, indexed starting with 0 (like Vector, not database
+ * objects!)
*/
- public static <O extends NumberVector<?,? extends Number>> LinearScale[] calcScales(Relation<O> db) {
+ public static <O extends NumberVector<? extends Number>> LinearScale[] calcScales(Relation<O> db) {
if (db == null) {
throw new AbortException("No database was given to Scales.calcScales.");
}
- int dim = DatabaseUtil.dimensionality(db);
- DoubleMinMax minmax[] = DoubleMinMax.newArray(dim);
- LinearScale scales[] = new LinearScale[dim];
-
+ int dim = RelationUtil.dimensionality(db);
+ DoubleMinMax[] minmax = DoubleMinMax.newArray(dim);
+ LinearScale[] scales = new LinearScale[dim];
+
// analyze data
- for(DBIDIter iditer = db.iterDBIDs(); iditer.valid(); iditer.advance()) {
+ for (DBIDIter iditer = db.iterDBIDs(); iditer.valid(); iditer.advance()) {
O v = db.get(iditer);
- for(int d = 0; d < dim; d++) {
- minmax[d].put(v.doubleValue(d+1));
+ for (int d = 0; d < dim; d++) {
+ minmax[d].put(v.doubleValue(d));
}
}
-
+
// generate scales
- for(int d = 0; d < dim; d++) {
+ for (int d = 0; d < dim; d++) {
scales[d] = new LinearScale(minmax[d].getMin(), minmax[d].getMax());
}
return scales;