3

JAMA.matrix パッケージを使用しています。行列の列を印刷するにはどうすればよいですか

4

3 に答える 3

1

最も簡単な方法は、おそらく行列を転置してから、各行を出力することです。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] );
    }
}

duffymo がコメントで指摘したように、転置をバイパスし、ネストされた for ループを記述して、行全体ではなく列を出力するが効率的です。両方の方法で印刷する必要がある場合、2 倍のコードになります。これは十分に一般的なトレードオフ (コード サイズに対する速度) であり、決定するのはあなたに任せます。

于 2009-03-11T12:03:27.117 に答える
0

マトリックスで getArray() メソッドを呼び出して、要素を表す double[][] を取得できます。
次に、その配列をループして、必要な列/行/要素を表示できます。

その他のメソッドについては、 APIを参照してください。

于 2009-03-11T12:01:21.333 に答える
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();
}
于 2009-05-22T23:09:47.197 に答える