[W,s,v]=svd((repmat(sum(x.*x,1),size(x,1),1).*x)*x');