Hauptseite   Packages   Klassenhierarchie   ?bersicht   Auflistung der Dateien   Datenstruktur-Elemente  

MLVector.java

gehe zur Dokumentation dieser Datei
00001 /*
00002  * $Source: /shared/cvsroot/diplom/app/src/java/de/picana/clusterer/MLVector.java,v $
00003  * $Author: mstolpe $
00004  * $Date: 2003/04/22 09:51:28 $
00005  * $Revision: 1.6 $
00006  * $Release$
00007  *
00008  * Created on 20. November 2002, 23:38
00009  *
00010  * Copyright 2002 by Marco Stolpe
00011  */
00012 
00013 package de.picana.clusterer;
00014 
00015 import java.text.*;
00016 import java.util.*;
00017 
00018 import weka.core.*;
00019 
00020 
00030 public class MLVector implements Comparable {
00031     
00032     private static final DecimalFormat df;
00033     private static Random rand = new Random();
00034     
00035     static {
00036         df = (DecimalFormat)DecimalFormat.getInstance(Locale.ENGLISH);
00037         df.applyPattern("####0.000000");
00038     }
00039     
00040     public double[] value;
00041     public int dim;
00042     public int freq;
00043     public boolean pruned;
00044     public boolean visited;
00045     
00047     public MLVector(int dim) {
00048         this.value = new double[dim];
00049         this.freq = 0;
00050         this.pruned = false;
00051         this.visited = false;
00052         this.dim = dim;
00053     }
00054     
00055     public MLVector(Instance inst) {
00056         this.value = new double[inst.numAttributes()];
00057         this.freq = 1;
00058         this.pruned = false;
00059         this.visited = false;
00060         this.dim = inst.numAttributes();
00061         for (int i=0; i < dim; i++) {
00062             this.value[i] = inst.value(i); 
00063         }
00064     }
00065     
00066     public boolean equals(Object o) {
00067         if (!(o instanceof MLVector))
00068             return false;
00069 
00070         MLVector vec = (MLVector)o;
00071 
00072         if (vec.dim != this.dim)
00073             return false;
00074         
00075         boolean eq = true;
00076         
00077         int i = 0;
00078         while ((i < vec.dim) && (eq != false)) {
00079             if (vec.value[i] != this.value[i])
00080                 eq = false;
00081             i++;    
00082         }
00083         
00084         return eq;
00085     }
00086     
00087     public int hashCode() {
00088         double sum = 0.0;
00089         int i;
00090         for (i=0; i < dim; i++)
00091             sum += value[i];
00092         return (int)(sum * 100000 / dim);
00093     }
00094     
00095     public int compareTo(Object o) {
00096         MLVector vec = (MLVector)o;
00097 
00098         if (vec.dim != this.dim)
00099             return -1;
00100         
00101         int i = 0;
00102         while (i < vec.dim) {
00103             if (this.value[i] < vec.value[i])
00104                 return -1;
00105             else if (this.value[i] > vec.value[i])
00106                 return 1;
00107             i++;
00108         }
00109         
00110         return 0;
00111     }
00112     
00113     public void mult(double scalar) {
00114         for (int i=0; i < value.length; i++) {
00115             value[i] *= scalar;
00116         }
00117     }
00118     
00119     public void add(MLVector vec) {
00120         for (int i=0; i < value.length; i++) {
00121             value[i] += vec.value[i];    
00122         }    
00123     }
00124     
00125     public void sub(MLVector vec) {
00126         for (int i=0; i < value.length; i++) {
00127             value[i] -= vec.value[i];    
00128         }
00129     }
00130     
00131     public static MLVector sub(MLVector vec1, MLVector vec2) {
00132         MLVector vec = new MLVector(vec1.dim);
00133         for (int i=0; i < vec.dim; i++) {
00134             vec.value[i] = vec1.value[i] - vec2.value[i];    
00135         }
00136         return vec;
00137     }
00138     
00139     public static MLVector getRandom(MLVector src, double radius) {
00140         MLVector vec = new MLVector(src.dim);
00141         for (int i=0; i < src.dim; i++) {
00142             vec.value[i] = src.value[i] + (radius - rand.nextDouble() * (radius * 2));
00143             if (vec.value[i] < 0) vec.value[i] = 0.0;
00144             if (vec.value[i] > 1.0) vec.value[i] = 1.0;
00145         }
00146         return vec;
00147     }
00148     
00149     public String toString() {
00150         int i;
00151         String str = "(";
00152         for (i=0; i < dim; i++) {
00153             str += value[i]; // df.format(value[i]);
00154             if (i != dim-1)
00155                 str += ", ";
00156         }
00157         str += ") -> ";
00158         str += this.freq;
00159         return str;
00160     }
00161 }

Erzeugt am Tue Apr 22 11:22:56 2003 f?r Picana von doxygen1.2.18