使用EJML进行矩阵乘法

3
double[][] data_array
SimpleMatrix dataMatrix = new SimpleMatrix(data_array);
SimpleMatrix omegaMatrix = new SimpleMatrix(omega);
SimpleMatrix cMatrix =  dataMatrix.mult(omegaMatrix);
System.out.println("Multiplied");
cMatrix.print();

我正在使用 EJML 库进行矩阵运算。

1.How to convert a simple matrix back to double[][].

以上结果是一个1行1列的矩阵。
2. Can we store this value in a double variable?
1个回答

5

数据不一定存储为double[][]数组。实际上,它是作为double[]数组存储的。您可以获取内部的DenseMatrix64F,然后从中获取double[]数组:

double data[] = cMatrix.getMatrix().getData();

这个数组是按照行优先的方式存储数据的。

为了将其存储在单个值中,您可以调用

double singleValue = cMatrix.getMatrix().getData()[0];

编辑:我认为在评论中有人要求这样做,但我不确定....
private static double[][] toArray(DenseMatrix64f matrix) 
{
    double array[][] = new double[matrix.getNumRows()][matrix.getNumCols()];
    for (int r=0; r<matrix.getNumRows(); r++)
    { 
        for (int c=0; c<matrix.getNumCols(); c++)
        {
            array[r][c] = matrix.get(r,c);
        }
    }
    return array;
}

如何获取双精度数组中的值? - USB
@SreeVeni 这个问题不太清楚。如果你想问的是 double value = array[i];,那么你应该阅读 http://docs.oracle.com/javase/tutorial/java/nutsandbolts/arrays.html。 - Marco13
我想问的是,在JAMA中,我们可以通过使用double[][] Inverse = PInverse.getArray();将矩阵转换回double[][]。在EJML中是否也可以这样做? - USB

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接