矩阵、矩阵转置、矩阵相乘

function createArr2(firstValue,rows,colunms) {  //初始值,行,列
    //生成初始值为firstValue,rows行,colunms列的矩阵
    var arr1 = [],count = firstValue;
    for(var i=0;i<rows;i++){        //一维长度为3
        arr1[i] = [];
        for(var j=0;j<colunms;j++){    //二维长度为5
            arr1[i][j] = count;
            count++
        }
    };
    console.log(arr1);  //- - - - - - - - - 产生的矩阵结果
    //本例:产生的矩阵为:
初始矩阵.png
    //矩阵转置
    var arr2=[];
    for(var i=0;i<arr1[0].length;i++){
        arr2[i]=[];
    }
    for(var i=0;i<arr1.length;i++){
        for(var j=0;j<arr1[i].length;j++){
            arr2[j][i]=arr1[i][j];
        }
    }
    console.log(arr2);  //转置结果
    //矩阵的转置结果为:
矩阵转置.png
    //矩阵相乘,条件是rows1 * column    column * rows2  结果==>   rows1 * rows2
    if(arr1[0].length !== arr2.length) return ;
    //用来存放结果的矩阵,axb的结果为a的行数和b的列数
    var result = [];
    //对a的每行进行遍历
    for(var i=0; i<arr1.length; i++) {
        result[i] = [];
        //对b的每列进行遍历
        for(var j=0;j<arr2[0].length; j++) {
            //c为每一个点的值
            var c = 0;
            //第i行j列的值为a的第i行上的n个数和b的第j列上的n个数对应相乘之和,其中n为a的列数,也是b的行数,a的列数和b的行数相等
            for(var k=0; k<arr1[0].length; k++) {
                c += (arr1[i][k]*arr2[k][j]);
            }
            result[i][j] = c;
        }
    }
    console.log(result);  //相乘结果
矩阵相乘.png
}
console.log(createArr2(3,4,2));  //初始值3、4行、2列
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容