DMatrixRMaj: получить данные в матричной форме
Когда я инициализирую новый DMatrixRMaj
в ejml (стандартный формат для реальной матрицы), он может хранить внутренне double[][]
матрица. пример
double[][] a = new double[][];
//init a
DMatrixRMaj d = new DMatrixRMaj(a);
//math operations on d
Теперь, после необходимых расчетов, как я могу получить обратно double[][]
форма д? С d.getData()
я могу только получить форму строки. Я также попытался обернуть SimpleMatrix
или создание SimpleMatrix
из двойников, но я не нашел никаких методов (или матричного формата) для получения двойников назад!
Ты знаешь, как я могу это сделать? Или вы можете предложить прямой обходной путь без написания персонализированной функции?
1 ответ
Я не очень знаком с библиотекой, но учитывая, что матрица хранится с использованием data[ y*numCols + x ] = data[y][x]
формат, вы можете написать свою собственную функцию для получения данных, используя тот же формат.
Пример:.
import org.ejml.data.DMatrixRMaj;
public class Main {
public static void main(String[] args) throws Exception {
double [] [] doubles = new double[2][2];
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 2; j++) {
doubles[i][j] = 0.1;
}
}
//init a
DMatrixRMaj d = new DMatrixRMaj(doubles);
double [] [] doublesAfter = getInitMatrix(d);
System.out.println("Initial matrix: ");
printMatrix(doubles);
System.out.println("Same matrix after DMatrixRMaj: ");
printMatrix(doublesAfter);
}
private static double [][] getInitMatrix(DMatrixRMaj dMatrixRMaj) {
double [] [] doubles = new double[dMatrixRMaj.getNumRows()][dMatrixRMaj.getNumCols()];
for (int x = 0; x < dMatrixRMaj.getNumRows(); x++) {
for (int y = 0; y <dMatrixRMaj.getNumCols(); y++) {
doubles[x][y] = dMatrixRMaj.getData()[y*dMatrixRMaj.getNumCols() + x];
}
}
return doubles;
}
private static void printMatrix(double [][] matrix) {
for (int i = 0; i < matrix.length; i++) {
for (int j = 0; j < matrix[i].length; j++) {
System.out.print(matrix[i][j] + " ");
}
System.out.println();
}
}
}
**Print result:**
//Initial matrix:
0.1 0.1
0.1 0.1
//Same matrix after DMatrixRMaj:
0.1 0.1
0.1 0.1