矩阵乘法的结果不正确-Javascript

时间:2019-07-02 15:39:08

标签: javascript multidimensional-array nested-loops matrix-multiplication

尽管我的代码运行没有错误,但是我得到的矩阵(即C)不正确。 C应该是:[6,20,3,5],[-3,3,-2,0],[30,27,5,12],[9,13,8,4]。

基于我的代码,C目前是什么:[35,45,25,15],[14,18,10,6],[-14,-18,-10,-6],[14, 18,10,6]

我觉得这是因为我的循环与我的结果矩阵不匹配,但我似乎无法找出问题所在。

我还注意到,该论坛上的其他矩阵乘法线程使用3个循环,而不是我的4个循环。如果这是我出错的原因,请您解释一下原因?应该为2个单独的行和2个单独的列进行迭代吗?

const A = [  [-4,0,5],
            [-3,-1,2],
            [6,7,-2],
            [1, 1, 2]
         ];

const B = [ [1, 0, 3, 0],
            [4,5,-1, 2],
            [2, 4, 3, 1]
         ];

C = [];

for (var i =0; i< A.length; i++){
    C[i] = [];
    for (var j =0 ; j< A[j].length; j++){
        //console.log(A[i][j]);
        for (var y = 0 ; y < B[0].length ; y++){
                C[i][y] = 0;
            for (var x = 0 ; x < B.length ; x++){
                //console.log(B[x][y]+ "["+x+","+y+"]");
                //console.log(C[i][y]+ "["+i+","+y+"]"); 
                C[i][y] += A[i][j] * B[x][y];
            }
            console.log(C[i][y] + "[" + i + "," +y+"] is the resultant matrix");
        }
    }
}
console.log(JSON.stringify(C)); //to print out resultant matrix in array format

1 个答案:

答案 0 :(得分:1)

您不需要使用四个循环。您仅需要三个循环即可解决问题。不是一个问题就可以使用嵌套循环。

此问题仅需要三个嵌套循环。乘以矩阵。我们将第一个矩阵的每一行的每个元素与第二个矩阵的每一列的相应元素相乘。

现在您需要了解的是,第三个嵌套循环将生成getRemoteObject。在这一点上,我们不需要另一个循环,因为我们将它们添加到相应的值。并非每个值都添加到所有值。

-4,0,5