2009-03-11 15 views

Antwort

0

Sie können die Methode getArray() auf der Matrix aufrufen, um eine doppelte [] [] zu erhalten, die die Elemente darstellt.
Dann können Sie das Array durchlaufen, um die gewünschten Spalten/Zeilen/Elemente anzuzeigen.

Weitere Methoden finden Sie unter API.

1

Der einfachste Weg wäre wahrscheinlich transpose die Matrix, dann drucken Sie jede Zeile. Die Teilnahme des Beispiels aus den 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]); 
    } 
} 

Wie duffymo in einem Kommentar darauf hingewiesen, es würde effizienter sein, die Umsetzung zu umgehen und schreiben Sie einfach die verschachtelte for-Schleifen nach unten den Spalten zu drucken, anstatt über die die Reihen. Wenn Sie beide Wege drucken müssen, würde das doppelt so viel Code ergeben. Das ist ein gemeinsamer Kompromiss (Geschwindigkeit für die Code-Größe), den ich Ihnen überlassen muss.

+0

Wie drucke ich jede Zeile? – user64480

+0

Ich habe etwas Code zur Veranschaulichung hinzugefügt. –

+0

Also haben wir 2 Matrizen hier, eine und eine Transponierte? Es gibt keinen Zweifel, dass es "funktioniert", aber das ist ein großer Speicherpreis, der für Druckspalten bezahlt werden muss. Es ist trivial für dieses Beispiel, aber jede Matrix für ein echtes Problem wird einen großen Schlag bekommen. – 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(); 
} 
Verwandte Themen