,

矩阵乘法

一、前提条件(必须满足,否则无法相乘) 设矩阵 A 维度:m 行 n 列 矩阵 B 维度:n 行 p 列 要求…

一、前提条件(必须满足,否则无法相乘)

设矩阵 A 维度:m 行 n 列

矩阵 B 维度:n 行 p 列

要求:A 的列数 = B 的行数,都等于 n

相乘结果矩阵 C=A×B,维度:m 行 p 列

二、计算公式

结果矩阵第 i 行第 j 列元素:

含义:A 的第 i 行,和 B 的第 j 列,对应相乘再全部相加。

举例

/**
 * 矩阵乘法 A * B
 * @param {number[][]} A m行n列
 * @param {number[][]} B n行p列
 * @returns {number[][]} m行p列结果矩阵
 */
function matrixMultiply(A, B) {
    // 维度校验
    const m = A.length;
    const n = A[0].length;
    const n2 = B.length;
    const p = B[0].length;
    if (n !== n2) {
        throw new Error("A的列数必须等于B的行数,无法相乘");
    }

    // 初始化 m行p列全0矩阵
    const res = Array.from({ length: m }, () => Array(p).fill(0));

    // 三重循环
    for (let i = 0; i < m; i++) {
        for (let j = 0; j < p; j++) {
            let sum = 0;
            for (let k = 0; k < n; k++) {
                sum += A[i][k] * B[k][j];
            }
            res[i][j] = sum;
        }
    }
    return res;
}

// 测试
const A = [
    [1, 2],
    [3, 4]
];
const B = [
    [5, 6],
    [7, 8]
];
console.log(matrixMultiply(A, B));
// [ [19,22], [43,50] ]

Previous Post

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

About the Author

每个人都有自己得时区,在自己得时区里,一切都是准时的。

BlockSpare — News, Magazine and Blog Addons for (Gutenberg) Block Editor