在本页中:
matrix?
matrix-rows
matrix-cols
rectangle->matrix
matrix->rectangle
make-matrix
build-matrix
matrix-ref
matrix-set
matrix-where?
matrix-render
matrix-minor
1.20.1 矩阵片断
snip-class

1.20 矩阵函数: "matrix.rkt"

 (require htdp/matrix) package: htdp-lib

本实验性教学包提供对矩阵和矩阵函数的支持。矩阵就是矩形的“对象”。它被显示为图像, 就和操作图像: "image.rkt"中的图像一样。事实上,矩阵就是图像, 或者按模拟和动画: "world.rkt"的说法,是场景。

目前不存在关于矩阵的教育材料。

函数以通常(学校中数学)的方式访问矩阵:先访问行,再访问列。

这些函数没有针对效率进行优化,因此不要期望构建处理大量数据的程序。

Rectangle (X的)Rectangle(矩形)是包含X的、非空表的表,其中所有项的表都是等长的(且长度不为零)。

函数

(matrix? o)  boolean?

  o : any/c
判断输入对象是否是矩阵

函数

(matrix-rows m)  natural-number/c

  m : matrix?
求矩阵m的行数

函数

(matrix-cols m)  natural-number/c

  m : matrix?
求矩阵m的列数

函数

(rectangle->matrix r)  matrix?

  r : Rectangle
Rectangle创建矩阵

函数

(matrix->rectangle m)  Rectangle

  m : matrix?
由矩阵m创建rectangle

函数

(make-matrix n m l)  matrix?

  n : natural-number/c
  m : natural-number/c
  l : (Listof X)
l创建nm的矩阵

注意:如果像make-vector那样处理的话,make-matrix将读入可选的条目数量。

函数

(build-matrix n m f)  matrix?

  n : natural-number/c
  m : natural-number/c
  f : 
(-> (and/c natural-number/c (</c m))
    (and/c natural-number/c (</c n))
    any/c)
通过将f应用于(0 ,0)(0 ,1)、……、((sub1 m) ,(sub1 n))来创建nm的矩阵

函数

(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)))
取矩阵m中的(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
创建新矩阵,其中(i,j)位置为x,所有其他位置与m相同

函数

(matrix-where? m pred?)  (listof posn?)

  m : matrix?
  pred? : (-> any/c boolean?)
(matrix-where? M P)生成(make-posn i j)的表, 其中(P (matrix-ref M i j))都成立

函数

(matrix-render m)  Rectangle

  m : matrix?
将此矩阵m呈现为字符串的rectangle

函数

(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)))
m创建位于(i,j)的子矩阵

1.20.1 矩阵片断

htdp/matrix教学包export snip-class对象,用于支持保存和读取矩阵片断。

snip-class : (instance/of matrix-snip-class%)

支持2D矩阵呈现的对象。