Created
May 13, 2015 13:51
-
-
Save LinZap/3f8f7695ddff434eabe4 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// 矩陣相加 | |
var plus = function(arr1,arr2){ | |
var res = matrix(arr1.length,arr1[0].length); | |
if(typeof arr2==="number"){ | |
for(var i=0;i<arr1.length;i++) | |
for(var j=0;j<arr1[0].length;j++) | |
res[i][j] = arr1[i][j]+arr2; | |
} | |
else{ | |
for(var i=0;i<arr1.length;i++) | |
for(var j=0;j<arr1[0].length;j++) | |
res[i][j] = arr1[i][j]+arr2[i][j]; | |
return res; | |
} | |
}; | |
// 矩陣相減 (arr1 , arr2 || val) | |
var minus = function(arr1,arr2){ | |
var res = matrix(arr1.length,arr1[0].length); | |
if(typeof arr2==="number"){ | |
for(var i=0;i<arr1.length;i++) | |
for(var j=0;j<arr1[0].length;j++) | |
res[i][j] = arr1[i][j]-arr2; | |
} | |
else{ | |
for(var i=0;i<arr1.length;i++) | |
for(var j=0;j<arr1[0].length;j++) | |
res[i][j] = arr1[i][j]-arr2[i][j]; | |
return res; | |
} | |
}; | |
// 矩陣相除 (arr1 , arr2 || val) | |
var divided = function(arr1,arr2){ | |
var res = matrix(arr1.length,arr1[0].length); | |
if(typeof arr2==="number"){ | |
for(var i=0;i<arr1.length;i++) | |
for(var j=0;j<arr1[0].length;j++) | |
res[i][j] = arr1[i][j]/arr2; | |
} | |
else{ | |
for(var i=0;i<arr1.length;i++) | |
for(var j=0;j<arr1[0].length;j++) | |
res[i][j] = arr1[i][j]/arr2[i][j]; | |
return res; | |
} | |
}; | |
// 矩陣相乘 (arr1 , arr2 || val) | |
var times = function(arr1,arr2){ | |
var res = matrix(arr1.length,arr2[0].length); | |
if(typeof arr2==="number"){ | |
for(var i=0;i<arr1.length;i++) | |
for(var j=0;j<arr1[0].length;j++) | |
res[i][j] = arr1[i][j]*arr2; | |
} | |
else{ | |
for(var k=0;k<arr2[0].length;k++) | |
for(var i=0;i<arr1.length;i++){ | |
var sum = 0; | |
for(var j=0;j<arr1[i].length;j++) | |
sum += arr1[i][j]*arr2[j][k]; | |
res[i][k] = sum; | |
} | |
} | |
return res; | |
}; | |
// 轉置矩陣 | |
var T = function(arr){ | |
var res = matrix(arr[0].length,arr.length); | |
for(var i=0;i<arr.length;i++) | |
for(var j=0;j<arr[0].length;j++) | |
res[j][i] = arr[i][j]; | |
return res; | |
}; | |
// 指定大小的 空矩陣 matrix(SizeX,SizeY) | |
var m = function(x,y){ | |
return matrix(x,y); | |
}; | |
// 填充矩陣 (arr,value/function) | |
var fill = function(arr,value){ | |
if(typeof value==="function"){ | |
for (var i = 0; i < arr.length; i++) | |
for (var j = 0; j < arr[0].length; j++) | |
arr[i][j] = value(arr[i][j]); | |
} | |
else{ | |
for (var i = 0; i < arr.length; i++) | |
for (var j = 0; j < arr[0].length; j++) | |
arr[i][j] = value; | |
} | |
return arr; | |
}; | |
// 空矩陣 | |
function matrix(x,y){ | |
var res = []; | |
for(var a=0;a<x;a++){ | |
var row = []; | |
for(var b=0;b<y;b++) row.push(null); | |
res.push(row); | |
} | |
return res; | |
} | |
// show res | |
function show(arr){ | |
var res = ""; | |
for (var i = 0; i < arr.length; i++) | |
for (var j = 0; j < arr[0].length; j++) | |
res+=arr[i][j]+","; | |
res+="<br>"; | |
} | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment