java - DMatrixRMaj : get data in matrix form

标签 java matrix double ejml

当我在 ejml(实矩阵的标准格式)中初始化一个新的 DMatrixRMaj 时,它可以在内部存储一个 double[][] 矩阵。示例

double[][] a = new double[][];
//init a
DMatrixRMaj d = new DMatrixRMaj(a);
//math operations on d

现在,经过必要的计算后,我如何才能得到 d 的 double[][] 形式?使用 d.getData() 我只能获取行形式。我也试过用 SimpleMatrix 包装,或从 double 创建 SimpleMatrix,但我没有找到任何方法(或矩阵格式)来检索 double !

你知道我该怎么做吗?或者您可以提出一个无需编写个性化函数的直接解决方法吗?

最佳答案

我不是很熟悉这个库,但是考虑到矩阵是使用 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 

关于java - DMatrixRMaj : get data in matrix form,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50275717/

相关文章:

Matlab reshape 回原始图像

r - 将新行一一添加到矩阵

C 程序不打印值

java - 重新定义扫描仪的非数字识别?

java - 子模块 Maven 依赖关系管理的最佳实践

java - 需要知道以下给定格式的数字格式

python - 如何使用 CUDA 通过目前通过 scipy.sparse.csc_matrix.dot 实现的密集向量积来加速稀疏矩阵?

使用变量选择在点后打印多少个数字

java - 为什么在 Java 中会出现 ArrayStoreException?

Java (HashMap) - 如何保存和加载entrySet()?