Skip to content

Instantly share code, notes, and snippets.

@LinZap
Created May 13, 2015 13:51
Show Gist options
  • Save LinZap/3f8f7695ddff434eabe4 to your computer and use it in GitHub Desktop.
Save LinZap/3f8f7695ddff434eabe4 to your computer and use it in GitHub Desktop.
// 矩陣相加
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