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
|