1.16 Matrix Operations: "matrix.ss"
The experimental teachpack supports matrices and matrix operations. A matrix is just a rectangle of ’objects’. It is displayed as an image, just like the images from Manipulating Images: "image.ss". Matrices are images and, indeed, scenes in the sense of the Simulations and Animations: "world.ss".
No educational materials involving matrices exist.
The operations access a matrix in the usual (school-mathematics) manner: row first, column second.
The operations aren’t tuned for efficiency so don’t expect to build programs that process lots of data.
Rectangle A Rectangle (of X) is a non-empty list of lists containing X where all elements of the list are lists of equal (non-zero) length.
| (matrix? o) → boolean? |
| o : any/c |
determines whether the given object is a matrix?
| (matrix-rows m) → natural-number/c |
| m : matrix? |
determines how many rows this matrix m has
| (matrix-cols m) → natural-number/c |
| m : matrix? |
determines ow many columns this matrix m has
| (rectangle->matrix r) → matrix? |
| r : Rectangle |
creates a matrix from the given Rectangle
| (matrix->rectangle m) → Rectangle |
| m : matrix? |
creates a rectangle from this matrix m
| (make-matrix n m l) → matrix? |
| n : natural-number/c |
| m : natural-number/c |
| l : (Listof X) |
creates an n by m matrix from l
NOTE: make-matrix would consume an optional number of entries, if it were like make-vector
| (build-matrix n m f) → matrix? | |||||||||
| n : natural-number/c | |||||||||
| m : natural-number/c | |||||||||
|
creates an n by m matrix by applying f to (0 ,0), (0 ,1), ..., ((sub1 m) ,(sub1 n))
| (matrix-ref m i j) → any/c |
| m : matrix? |
| i : (and/c natural-number/c (</c (matrix-rows m))) |
| j : (and/c natural-number/c (</c (matrix-rows m))) |
retrieve the item at (i,j) in matrix m
| (matrix-set m i j x) → matrix? |
| m : matrix? |
| i : (and/c natural-number/c (</c (matrix-rows m))) |
| j : (and/c natural-number/c (</c (matrix-rows m))) |
| x : any/c |
creates a new matrix with x at (i,j) and all other places the same as in m
| (matrix-where? m pred?) → (listof posn?) |
| m : matrix? |
| pred? : (-> any/c boolean?) |
(matrix-where? M P) produces a list of (make-posn i j) such that (P (matrix-ref M i j)) holds
| (matrix-render m) → Rectangle |
| m : matrix? |
renders this matrix m as a rectangle of strings
| (matrix-minor m i j) → matrix? |
| m : matrix? |
| i : (and/c natural-number/c (</c (matrix-rows m))) |
| j : (and/c natural-number/c (</c (matrix-rows m))) |
creates a matrix minor from m at (i,j)
| (matrix-set! m i j x) → matrix? |
| m : matrix? |
| i : (and/c natural-number/c (</c (matrix-rows m))) |
| j : (and/c natural-number/c (</c (matrix-rows m))) |
| x : any/c |
like matrix-set but uses a destructive update