Skip to content
Snippets Groups Projects
Commit 17c6d2c7 authored by Jason R Wilson's avatar Jason R Wilson
Browse files

files for PSA02

parent 357ad0f4
No related merge requests found
...@@ -40,21 +40,21 @@ int find_cluster (double kmeans[], double point[], int k, int dim) { ...@@ -40,21 +40,21 @@ int find_cluster (double kmeans[], double point[], int k, int dim) {
/* calculate the next kmeans */ /* calculate the next kmeans */
void calc_kmeans_next (double data[], int num_points, int dim, double kmeans[], double kmeans_next[], int k) { void calc_kmeans_next (double data[], int num_points, int dim, double kmeans[], double kmeans_next[], int k) {
int num_points[k]; int cluster_size[k];
for (int i=0;i<k;i++) { for (int i=0;i<k;i++) {
num_points[i] = 0; cluster_size[i] = 0;
} }
vec_zero(kmeans_next,k*dim); vec_zero(kmeans_next,k*dim);
for (int i=0;i<num_points;i++) { for (int i=0;i<num_points;i++) {
int cluster = find_cluster(kmeans,data+i*dim,k,dim); int cluster = find_cluster(kmeans,data+i*dim,k,dim);
double* kmean = kmeans_next+cluster*dim; double* kmean = kmeans_next+cluster*dim;
vec_add(kmean,data+i*dim,kmean,dim); vec_add(kmean,data+i*dim,kmean,dim);
num_points[cluster] += 1; cluster_size[cluster] += 1;
} }
for (int i=0;i<k;i++) { for (int i=0;i<k;i++) {
double* kmean = kmeans_next+i*dim; double* kmean = kmeans_next+i*dim;
if (num_points[i] > 0) { if (cluster_size[i] > 0) {
vec_scalar_mult(kmean,1.0/num_points[i],kmean,dim); vec_scalar_mult(kmean,1.0/cluster_size[i],kmean,dim);
} else { } else {
printf ("error : cluster has no points!\n"); printf ("error : cluster has no points!\n");
exit(1); exit(1);
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment