public static DoubleMatrix2D decompPCA (DoubleMatrix2D sigma) {
// L'objet SingularValueDecomposition permet de recuperer la matrice
// des valeurs propres en ordre decroissant et celle des vecteurs propres de
// sigma (pour une matrice symetrique et definie-positive seulement).
SingularValueDecomposition sv = getSvd (sigma);
// D contient les valeurs propres sur la diagonale
DoubleMatrix2D D = sv.getS ();
// Calculer la racine carree des valeurs propres
for (int i = 0; i < D.rows(); ++i)
D.setQuick (i, i, Math.sqrt (D.getQuick (i, i)));
DoubleMatrix2D P = sv.getV();
// Multiplier par la matrice orthogonale (ici P)
return P.zMult (D, null);
}