Domanda

Uso il pacchetto JAMA.matrix ... come faccio a stampare le colonne di una matrice

È stato utile?

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();
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top