我正在做一个将 2 个矩阵相乘的函数。
矩阵将始终具有相同的行数和列数。 (2x2, 5x5, 23x23, …)
当我打印它时,它不起作用。为什么?
例如,如果我创建两个 2x2 矩阵:
矩阵A:
[1][2]
[3][4]
矩阵B:
[5][6]
[7][8]
结果应该是:
[19][22]
[43][50]
( http://ncalculators.com/matrix/2x2-matrix-multiplication-calculator.htm )
但是,我得到:
[19][undefined]
[22][indefined]
function multiplyMatrix(matrixA, matrixB) {
var result = new Array(); //declare an array
//var numColsRows=$("#matrixRC").val();
numColsRows = 2;
//iterating through first matrix rows
for (var i = 0; i < numColsRows; i++) {
//iterating through second matrix columns
for (var j = 0; j < numColsRows; j++) {
var matrixRow = new Array(); //declare an array
var rrr = new Array();
var resu = new Array();
//calculating sum of pairwise products
for (var k = 0; k < numColsRows; k++) {
rrr.push(parseInt(matrixA[i][k]) * parseInt(matrixB[k][j]));
} //for 3
resu.push(parseInt(rrr[i]) + parseInt(rrr[i + 1]));
result.push(resu);
//result.push(matrixRow);
} //for 2
} //for 1
return result;
} // function multiplyMatrix
原文由 Jordi 45454 发布,翻译遵循 CC BY-SA 4.0 许可协议
您对各种临时数组感到困惑。
undefined
值是由最内层循环下方的行上的越界访问引起的。我建议您坚持为乘法结果制作一个数组。您可能已经知道,问题在于 JavaScript 不允许您初始化多维数组。要制作二维数组,您必须初始化一个一维数组,然后遍历其元素并将每个元素初始化为一维数组。