矩阵乘法 - 单维*多维

时间:2013-12-03 12:43:07

标签: java matrix multiplication

我需要乘以两个矩阵。我很清楚矩阵是如何工作的,但是我发现这有点复杂,所以我研究了一下并发现了这一点。

    public static int[][] multiply(int a[][], int b[][]) {
    int aRows = a.length,
    aColumns = a[0].length,
    bRows = b.length,
    bColumns = b[0].length;
    int[][] resultant = new int[aRows][bColumns];

     for(int i = 0; i < aRows; i++) { // aRow
       for(int j = 0; j < bColumns; j++) { // bColumn
         for(int k = 0; k < aColumns; k++) { // aColumn
             resultant[i][j] += a[i][k] * b[k][j];
          }
       } 
     }
     return resultant;

此代码工作正常。然而,问题是我需要将单维矩阵(1 * 5)乘以多维矩阵(5 * 4),因此结果将是(1 * 4)矩阵,然后在同一程序中乘以a (1 * 4)矩阵由(4 * 3)矩阵产生(1 * 3)。

我需要将单维矩阵存储在普通数组(double [])而不是多维数组中!

我将此代码更改为以下内容,但仍无法解析正确的结果。

    public static double[] multiplyMatrices(double[] A, double[][] B) {
    int xA = A.length;  
    int yB = B[0].length;       
    double[] C = new double[yB];

          for (int i = 0; i < yB; i++) { // bColumn
            for (int j = 0; j < xA; j++) { // aColumn
                C[i] += A[j] * B[j][i];
            }
    }
    return C;

提前感谢您提供的任何提示:)

1 个答案:

答案 0 :(得分:0)

您可以使用RealMatrix来简化操作。

RealMatrix result = MatrixUtils.createRealMatrix(a).multiply(MatrixUtils.createRealMatrix(b));
double[] array = result.getRow(0);