// functions
    void Cluster::Centroid::compute() {

        LNodePtr temp = __c.__points;

        if (__c.__points == nullptr) {
            toInfinity();
            return;
        }

        double sum = 0;
        int i = 0;
        while( i < __dimensions) {
            for (int j = 0; j < __c.__size; ++j) {
                if(temp != nullptr){
                    sum += temp->point[i];
                    temp = temp->next;
                }
            }
            __p.setValue(i, sum / (__c.getSize()));
            sum = 0;
            temp = __c.__points;
            i++;
        }
            setValid(true);
        }
Exemple #2
0
    // functions
    void Cluster::Centroid::compute() {
        double avg;

        if (__c.__size > 0) {
            for (unsigned int d = 0; d < __dimensions; ++d) {
                avg = 0;
                for (unsigned int i = 0; i < __c.__size; ++i) {
                    avg += (__c[i])[d];
                }
                __p[d] = avg / __c.__size;
            }
        }
        else {
            toInfinity();
        }

        __valid = true;
    }
 void Cluster::Centroid::compute() {
     int size = __c.__size, dim = __dimensions;
     double average, total;
     if(size == 1) {
         __p = __c[0];
     }
     else if (size > 0) {
         for(int i = 0; i < dim; i++) {
             for (int k = 0; k < size; k++) {
                 Point p(__c[k]);
                 total += p[i];
             }
             average = total / size;
             __p.setValue(i, average);
             total = 0;
         }
     }
     else {
         toInfinity();
     }
     setValid(true);
     //std::cout << isValid() << " should be 1" << std::endl;
 }