@Test public void updateClusterCenters() { StandardKMeans_F64 alg = new StandardKMeans_F64(100,100,1,new InitializeStandard_F64()); alg.init(4,123); alg.clusters.resize(3); alg.workClusters.resize(3); alg.memberCount.resize(3); double orig[][] = new double[3][4]; orig[0] = new double[]{10,20,30,20}; orig[1] = new double[]{20,10,30,40}; orig[2] = new double[]{3,9,1,12}; alg.workClusters.data[0] = orig[0].clone(); alg.workClusters.data[1] = orig[1].clone(); alg.workClusters.data[2] = orig[2].clone(); alg.memberCount.data[0] = 10; alg.memberCount.data[1] = 1; alg.memberCount.data[2] = 3; // previous clusters will be near zero alg.updateClusterCenters(); for (int i = 0; i < 4; i++) { assertEquals(alg.clusters.data[0][i],orig[0][i]/10); assertEquals(alg.clusters.data[1][i],orig[1][i]/1); assertEquals(alg.clusters.data[2][i],orig[2][i]/3); } }