diff options
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.java | 43 |
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; |