Pregunta

Uso el paquete JAMA.matrix ... ¿Cómo imprimo las columnas de una matriz?

¿Fue útil?

Solución

Puede invocar el método getArray () en la matriz para obtener un doble [] [] que represente los elementos.
Luego puede recorrer esa matriz para mostrar las columnas / filas / elementos que desee.

Consulte la API para obtener más métodos.

Otros consejos

La forma más fácil probablemente sería transponer la matriz, luego imprime cada fila. Partiendo del ejemplo 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] );
    }
}

Como duffymo señaló en un comentario, sería más eficiente omitir la transposición y simplemente escribir los bucles anidados para imprimir las columnas en lugar de cruzar las filas. Si necesita imprimir en ambos sentidos, el resultado sería el doble de código. Esa es una compensación bastante común (velocidad para el tamaño del código) que dejo a usted decidir.

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();
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top