2009-03-11 5 views

Répondre

0

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 que vous voulez.

Voir le API pour plus de méthodes.

1

La méthode la plus simple serait probablement transpose la matrice, puis imprimez chaque ligne. La participation de l'exemple de la 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 duffymo a souligné dans un commentaire, il serait plus efficace de contourner la transposition et il suffit d'écrire le imbriquée pour les boucles d'imprimer vers le bas les colonnes au lieu de travers les rangées. Si vous avez besoin d'imprimer dans les deux sens, vous obtiendrez deux fois plus de code. C'est un compromis assez courant (vitesse pour la taille du code) que je vous laisse décider.

+0

Comment imprimer chaque ligne? – user64480

+0

J'ai ajouté du code pour illustrer. –

+0

Alors avons-nous 2 matrices ici, a et aTransposed? Il ne fait aucun doute que cela «fonctionne», mais c'est un gros prix à payer pour l'impression de colonnes. C'est trivial pour cet exemple, mais toute matrice pour un vrai problème va prendre un gros coup. – duffymo

0
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(); 
} 
Questions connexes