Javascript 矩阵乘法:四个循环与三个循环
虽然我的代码运行时没有错误,但我的结果矩阵(即C)是不正确的。 C应该是什么:[6,20,3,5],-3,3,-2,0],[30,27,5,12],[9,13,8,4] 根据我的代码[35,45,25,15],[14,18,10,6],-14,-18,-10,-6],[14,18,10,6],C现在是什么 我有一种感觉,这是因为我的循环与结果矩阵不匹配,但我似乎无法找出问题所在 我还注意到这个论坛上的其他矩阵乘法线程使用3个循环,而不是我的4个循环。如果这是我犯错误的原因,你能解释一下原因吗?难道不应该对两个独立的行和两个独立的列进行迭代吗Javascript 矩阵乘法:四个循环与三个循环,javascript,multidimensional-array,nested-loops,matrix-multiplication,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] 根据我的代码[35,45,25,15],[14,18,10,6],-14,-18,-10,-6],[14,18,10,6],C现在是什么 我有一种感觉,这是因为我的循环与结果矩阵不匹配,但我似乎无法找出问题所在 我还注意到这个论坛上的其他矩阵乘法线程使用3个循环,而不是我的4个循环。如果这是我犯错误的原因,你能解释一下原因吗?难
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
const A=[-4,0,5],
[-3,-1,2],
[6,7,-2],
[1, 1, 2]
];
常数B=[[1,0,3,0],
[4,5,-1, 2],
[2, 4, 3, 1]
];
C=[];
对于(变量i=0;i
您不需要使用四个循环。您只需要三个循环,这就是问题所在。用于解决问题的嵌套循环数不是您的选择
这个问题只需要三个嵌套循环。乘以矩阵。我们将第一个矩阵每行的每个元素与第二个矩阵每列的对应的元素相乘
现在需要了解的是,第三个嵌套循环将生成-4,0,5
。此时,我们不需要另一个循环,因为我们将它们添加到相应的值中。并非每个值都添加到所有值中
const A=[-4,0,5],
[-3,-1,2],
[6,7,-2],
[1, 1, 2]
];
常数B=[[1,0,3,0],
[4,5,-1, 2],
[2, 4, 3, 1]
];
常数C=[];
for(设i=0;i 控制台日志(C)代码>谢谢!现在的问题是,根据您的建议生成的矩阵打印出3列而不是4列…@SK Try刷新我刚才更新了代码。对我来说,它给出了正确的结果。是的!非常感谢。如果你认为它对你有帮助的话,请考虑接受答案。(但我希望我做得正确;仍然相对较新。)