Question

J'utilise le package JAMA.matrix, comment puis-je imprimer les colonnes d'une matrice

Était-ce utile?

La solution

Vous pouvez appeler la méthode getArray () sur la matrice pour obtenir un double [] [] représentant les éléments.
Ensuite, vous pouvez parcourir ce tableau pour afficher les colonnes / lignes / éléments souhaités.

Voir l'API pour plus de méthodes.

Autres conseils

Le moyen le plus simple serait probablement de transposer la matrice, puis imprimez chaque ligne. En prenant une partie de l'exemple de API :

double[][] vals = {{1.,2.,3},{4.,5.,6.},{7.,8.,10.}};
Matrix a = new Matrix(vals);
Matrix aTransposed = a.transpose();
double[][] valsTransposed = aTransposed.getArray();

// now loop through the rows of valsTransposed to print
for(int i = 0; i < valsTransposed.length; i++) {
    for(int j = 0; j < valsTransposed[i].length; j++) {        
        System.out.print( " " + valsTransposed[i][j] );
    }
}

Comme le duffymo l’a souligné dans un commentaire, il serait plus efficace de contourner la transposition et d’écrire simplement les boucles for imbriquées pour imprimer les colonnes plutôt que les lignes. Si vous devez imprimer dans les deux sens, le code sera multiplié par deux. C’est un compromis assez courant (vitesse pour la taille du code) que je vous laisse le soin de décider.

public static String strung(Matrix m) {
    StringBuffer sb = new StringBuffer();
    for (int r = 0; r < m.getRowDimension(); ++ r) {
        for (int c = 0; c < m.getColumnDimension(); ++c)
            sb.append(m.get(r, c)).append("\t");
        sb.append("\n");
    }
    return sb.toString();
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top