3
我在JavaScript中遇到了矩阵乘法代码问题。如果我运行下面有以下两个矩阵的功能:JS矩阵乘法问题
var m1 = [ [ 1, 0, 0 ],
[ 0, 1, 0 ],
[ 1, 1, 0 ],
[ 0, 0, 1 ],
[ 1, 0, 1 ],
[ 0, 1, 1 ],
[ 1, 1, 1 ] ];
var m2 = [ [ '0', '1', '1', '0', '0', '1', '1' ] ];
var matrixMult = function (m1, m2) {
console.log(m1);
console.log(m2);
console.log("m1 length: %d, m2[0].length: %d", m1.length, m2[0].length);
if (m1.length != m2[0].length) {
console.error("Incompatible matrix dimensions for multiplication.");
return false;
}
var result = [];
for (var i = 0; i < m1[0].length; i++) {
result[i] = [];
for (var j = 0; j < m2.length; j++) {
var sum = 0;
for (var k = 0; k < m1.length; k++) {
sum += m1[i][k] * m2[k][j];
}
result[i][j] = sum;
}
}
return result;
}
我得到这个错误:
/path/to/file.js:58
sum += m1[i][k] * m2[k][j];
^
TypeError: Cannot read property '0' of undefined
at matrixMult (...)
什么错?问题是m2.length
只有1吗?
任何修复建议? – warchinal 2013-02-13 10:28:24
就像我说的,先修复你的矩阵。你不能将这两个数字相乘。 – Amberlamps 2013-02-13 10:30:05
m1有7列(每个内部数组表示一列),m2有7行但是1列,所以它是(3,7)*(7,1) – warchinal 2013-02-13 10:36:35