annotate fmatrix.yeti @ 89:ef650ce77237

Start trying to adapt grids
author Chris Cannam
date Mon, 18 Mar 2013 21:24:04 +0000
parents 0b04bc5d2e53
children
rev   line source
Chris@10 1 module fmatrix;
Chris@5 2
Chris@18 3 // Basic matrices using primitive array of double as each row
Chris@18 4
Chris@10 5 vec = load fvector;
Chris@9 6
Chris@10 7 zeroMatrix rows cols = array (map \(vec.zeros cols) [1..rows]);
Chris@5 8
Chris@20 9 generate f rows cols =
Chris@5 10 (m = zeroMatrix rows cols;
Chris@5 11 for [0..rows-1] do row:
Chris@5 12 for [0..cols-1] do col:
Chris@9 13 m[row][col] := f row col;
Chris@5 14 done;
Chris@5 15 done;
Chris@5 16 m);
Chris@5 17
Chris@20 18 constMatrix n = generate do row col: n done;
Chris@20 19 randomMatrix = generate do row col: Math#random() done;
Chris@5 20 identityMatrix = constMatrix 1;
Chris@5 21
Chris@20 22 width m = if length m > 0 then vec.length m[0] else 0 fi;
Chris@6 23 cols = width;
Chris@6 24
Chris@5 25 height m = length m;
Chris@6 26 rows = height;
Chris@6 27
Chris@5 28 dimensions m = { cols = width m, rows = height m };
Chris@5 29
Chris@20 30 copyOf m = array (map vec.copyOf m);
Chris@9 31
Chris@6 32 transposed m is array<~double[]> -> array<~double[]> =
Chris@20 33 generate do row col: m[col][row] done (cols m) (rows m);
Chris@8 34
Chris@5 35 {
Chris@20 36 generate, constMatrix, randomMatrix, zeroMatrix, identityMatrix,
Chris@6 37 width, cols, height, rows, dimensions,
Chris@20 38 copyOf,
Chris@15 39 transposed,
Chris@5 40 }
Chris@5 41