Come posso stampare le colonne di una matrice JAMA?
Domanda
Uso il pacchetto JAMA.matrix ... come faccio a stampare le colonne di una matrice
Soluzione
È possibile richiamare il metodo getArray () sulla matrice per ottenere un doppio [] [] che rappresenta gli elementi.
Quindi è possibile eseguire il ciclo attraverso quell'array per visualizzare qualsiasi colonna / riga / elemento desiderato.
Vedi API per altri metodi.
Altri suggerimenti
Il modo più semplice sarebbe probabilmente trasporre la matrice, quindi stampa ogni riga. Prendendo parte dell'esempio dalla 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] );
}
}
Come ha sottolineato Duffymo in un commento, sarebbe più efficiente bypassare la trasposizione e scrivere semplicemente i loop nidificati per stampare le colonne anziché le righe. Se è necessario stampare in entrambi i modi, si otterrebbe il doppio del codice. Questo è un compromesso abbastanza comune (velocità per la dimensione del codice) che lascio a voi decidere.
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();
}