矩阵、矩阵转置、矩阵相乘
2019-09-29 本文已影响0人
倘浩洋
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列