Mercurial > hg > may
annotate matrix.yeti @ 16:e8d404787c35
Start on tests
author | Chris Cannam |
---|---|
date | Sat, 15 Dec 2012 23:50:58 +0000 |
parents | 29e39209360b |
children | 12c6f103ba8e |
rev | line source |
---|---|
Chris@1 | 1 module matrix; |
Chris@1 | 2 |
Chris@2 | 3 zeros n = array(map \0 [1..n]); |
Chris@2 | 4 ones n = array(map \1 [1..n]); |
Chris@1 | 5 |
Chris@2 | 6 generateMatrix f rows cols = array |
Chris@2 | 7 (map do row: array |
Chris@2 | 8 (map (f row) [0..cols-1]) |
Chris@2 | 9 done [0..rows-1]); |
Chris@1 | 10 |
Chris@2 | 11 constMatrix n = generateMatrix do row col: n done; |
Chris@1 | 12 |
Chris@2 | 13 randomMatrix = generateMatrix do row col: Math#random() done; |
Chris@2 | 14 |
Chris@2 | 15 zeroMatrix = constMatrix 0; |
Chris@2 | 16 identityMatrix = constMatrix 1; |
Chris@2 | 17 |
Chris@2 | 18 width m = if length m > 0 then length m[0] else 0 fi; |
Chris@2 | 19 |
Chris@2 | 20 height m = length m; |
Chris@2 | 21 |
Chris@3 | 22 dimensions m = { cols = width m, rows = height m }; |
Chris@3 | 23 |
Chris@2 | 24 transposed m = array |
Chris@2 | 25 (map do n: array |
Chris@2 | 26 (map do a: a[n-1] done m) |
Chris@2 | 27 done [1..width m]); |
Chris@2 | 28 |
Chris@2 | 29 interleaved m = array(concat(transposed m)); |
Chris@2 | 30 |
Chris@3 | 31 deinterleaved rows v = |
Chris@3 | 32 generateMatrix do row col: |
Chris@3 | 33 v[rows * col + row] |
Chris@3 | 34 done rows (length v / rows); |
Chris@2 | 35 |
Chris@3 | 36 { |
Chris@3 | 37 zeros, ones, |
Chris@3 | 38 generateMatrix, constMatrix, randomMatrix, zeroMatrix, identityMatrix, |
Chris@3 | 39 width, height, dimensions, |
Chris@3 | 40 transposed, |
Chris@3 | 41 interleaved, deinterleaved, |
Chris@3 | 42 } |
Chris@3 | 43 |