public Matrix dataProjections(V p) {
Vector centered = p.getColumnVector().minus(centroid);
Matrix sum = new Matrix(p.getDimensionality(), strongEigenvectors.getColumnDimensionality());
for(int i = 0; i < strongEigenvectors.getColumnDimensionality(); i++) {
Vector v_i = strongEigenvectors.getCol(i);
v_i.timesEquals(centered.transposeTimes(v_i));
sum.setCol(i, v_i);
}
return sum;
}