Как распечатать столбцы матрицы JAMA? - PullRequest
3 голосов
/ 11 марта 2009

Я использую пакет JAMA.matrix. Как распечатать столбцы матрицы

Ответы [ 3 ]

1 голос
/ 11 марта 2009

Самый простой способ - это транспонировать матрицу, а затем печатать каждую строку. Принимая участие в примере из 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] );
    }
}

Как отметил Даффимо в комментарии, будет эффективнее обходить транспонирование и просто записывать вложенные циклы for, чтобы печатать столбцы вместо строк. Если вам нужно печатать в обоих направлениях, это приведет к удвоению кода. Это достаточно распространенный компромисс (скорость для размера кода), и я оставляю вам решать.

0 голосов
/ 23 мая 2009
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();
}
0 голосов
/ 11 марта 2009

Вы можете вызвать метод getArray () для матрицы, чтобы получить double [] [], представляющий элементы.
Затем вы можете перебрать этот массив, чтобы отобразить любые столбцы / строки / элементы, которые вы хотите.

См. API для дополнительных методов.

...