gpt4 book ai didi

javascript - JS矩阵乘法问题

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:35:24 32 4
gpt4 key购买 nike

我在使用 JavaScript 中的矩阵乘法代码时遇到问题。如果我使用以下两个矩阵运行下面的函数:

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 吗?

最佳答案

只有一个 m2[0],但是您的内部 for 循环从 0 运行到 m1.length,大于0。因此,当它尝试访问 m2[1] 时,它会抛出错误。

同样通过矩阵乘法的定义

Multiplication of two matrices is defined only if the number of columns of the left matrix is the same as the number of rows of the right matrix.

(来源:Wikipedia)

您不能将样本矩阵相乘,因为 m1 有 3 列,而 m2 只有一行。

编辑

既然我正确理解了您的问题,我编写了一个小函数来帮助您解决问题:

function multiplyMatrix(m1, m2) {
var result = [];
for(var j = 0; j < m2.length; j++) {
result[j] = [];
for(var k = 0; k < m1[0].length; k++) {
var sum = 0;
for(var i = 0; i < m1.length; i++) {
sum += m1[i][k] * m2[j][i];
}
result[j].push(sum);
}
}
return result;
}

multiplyMatrix(m1, m2);

// => [ [2, 4, 2] ]

关于javascript - JS矩阵乘法问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14850511/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com