js使用for循环进行矩阵乘法

/**
     * 矩阵乘法 
     * @param matrix_a 矩阵行
     * @param matrix_c 矩阵列
     * @returns 返回矩阵
     */
    public MatrixMultiply(matrix_a: Float64Array, matrix_c: Float64Array): Float64Array {
        const matrix: Float64Array = new Float64Array(matrix_a.length);
        const length_a: number = Math.sqrt(matrix_a.length);
        let matrix_b: Float64Array = new Float64Array(matrix_a.length);;
        if (length_a === matrix_c.length) {
            for (let i: number = 0; i < matrix_a.length; i++) {
                matrix_b[i] = matrix_c[i % length_a];
            }
        } else {
            matrix_b = Float64Array.from(matrix_c, value => value);
        }
        const length_b: number = Math.sqrt(matrix_b.length);
        if (matrix_a.length === matrix_b.length) {
            if ((length_a % 1 === 0 && length_b % 1 === 0) && (matrix_a.length > 3 && length_b > 3)) {
                for (let i: number = 0; i < length_a; i++) {
                    for (let m: number = 0; m < length_a; m++) {
                        for (let n: number = 0; n < length_b; n++) {
                            matrix[i * length_a + m] += matrix_a[n * length_b + m] * matrix_b[i * length_a + n];
                        }
                    }
                }
                return matrix;
            } else {
                console.warn("请确定传入的矩阵长度能正常开方");
                return undefined;
            }
        } else {
            console.warn("请用两个长度相等的矩阵相乘");
            return undefined;
        }
    }

核心代码就这几行

两个if分别是

a矩阵与b矩阵是否相等

a矩阵长度开方与b矩阵长度开方是否是整数  a矩阵长度与b矩阵长度是否大于3

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值