// 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); }
// 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; }