UNPKG

1.9 kBJavaScriptView Raw
1var B = require("./base");
2var N = require("numeric");
3var M = {};
4
5M.tr = N.transpose;
6M.str = N.prettyPrint;
7M.rows=function(m) { return m.length; }
8M.cols=function(m) { return m[0].length; }
9M.row =function(m,i) { return m[i]; }
10M.col =function(m,j) {
11 var cols = m.cols();
12 var c = M.newV(cols);
13 for (var i=0;i<cols;i++) {
14 c[i] = m[i][j];
15 }
16 return c;
17}
18
19M.newV = function(n, value) {
20 return M.rep([n], value||0);
21}
22
23M.newM = function(rows, cols, value) {
24 return M.rep([rows, cols], value||0);
25}
26
27M.randomV = function(n, a, b) {
28 return M.random([n]).mul(b-a).add(a);
29}
30
31M.randomM = function(rows, cols, a, b) {
32 return M.random([rows, cols]).mul(b-a).add(a);
33}
34
35M.rowSum = function(m) {
36 var rows = M.rows(m);
37 var s=M.newV(rows, 0);
38 for (var i=0; i<rows; i++) {
39 s[i] = m[i].sumM();
40 }
41 return s;
42}
43
44M.colSum = function(m) {
45 var mt = M.tr(m);
46 return M.rowSum(mt);
47}
48
49M.rowMean = function(m) {
50 return M.rowSum(m).div(m.cols());
51}
52
53M.colMean = function(m) {
54 return M.colSum(m).div(m.rows());
55}
56
57M.addMV = function(m,v) {
58 var result = [];
59 for(var i=0;i<m.length;i++) {
60 result.push(m[i].add(v));
61 }
62 return result;
63}
64
65M.mapM = function(m, f) {
66 var fm = M.clone(m);
67 var rows = M.rows(m), cols=M.cols(m);
68 for(i=0;i<rows;i++) {
69 for(j=0;j<cols;j++)
70 fm[i][j]=f(m[i][j]);
71 }
72 return fm;
73}
74
75M.mapMM = function(m1,m2,f) {
76 var fm = M.clone(m1);
77 var rows = m1.rows(), cols=m1.cols();
78 for(i=0;i<rows;i++) {
79 for(j=0;j<cols;j++)
80 fm[i][j]=f(m1[i][j],m2[i][j]);
81 }
82 return fm;
83}
84
85M.flatM=function(m) {
86 var a=[];
87 var ai = 0;
88 for (var i=0; i<m.length;i++)
89 for (var j=0; j<m[i].length; j++)
90 a[ai++] = m[i][j];
91 return a;
92}
93
94M.eigR=function(m) {
95 var E = M.eig(m);
96 return {lambda:E.lambda.x, E:E.E.x};
97}
98
99B.mix(M, N);
100
101module.exports = M;
\No newline at end of file