Как распечатать столбцы матрицы JAMA?
Я использую пакет JAMA.matrix. Как мне распечатать столбцы матрицы?
3 ответа
Вы можете вызвать метод getArray() для матрицы, чтобы получить double[][], представляющий элементы.
Затем вы можете перебрать этот массив для отображения любых столбцов / строк / элементов, которые вы хотите.
См. API для других методов.
Самый простой способ, вероятно, состоит в том, чтобы транспонировать матрицу, а затем печатать каждую строку. Взяв часть примера из 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, чтобы печатать столбцы вместо строк. Если вам нужно печатать в обоих направлениях, это приведет к удвоению кода. Это достаточно распространенный компромисс (скорость для размера кода), и я оставляю вам решать.
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();
}