在 Antik 的手册中,有grid:subgrid
和grid:slice
用于矩阵,但我没有找到向量。并且grid:subgrid
grid:slice
不能应用于向量,有错误。
更新
现在我必须用(subseq (grid:copy-to vec 'array) 0 3
它来做这个,但这很棘手......
在 Antik 的手册中,有grid:subgrid
和grid:slice
用于矩阵,但我没有找到向量。并且grid:subgrid
grid:slice
不能应用于向量,有错误。
现在我必须用(subseq (grid:copy-to vec 'array) 0 3
它来做这个,但这很棘手......
您可以使用grid:slice
向量:
CL-USER> (grid:slice #(1 2 3 4 5) '((:range 0 2)))
;=> #(1.0 2.0 3.0)
— 功能:grid:slice grid index-selection &key destination drop
从网格中选择切片。索引选择是一个长度等于网格等级的列表。每个元素应该是以下之一:一个索引,指示要选择的索引,:all,如果要选择索引,则表示整个范围,:rev,如果要以相反的顺序选择索引,则表示整个范围,
(:range start end stride),表示要选择的索引范围;如果省略stride,则假定为1,
(:select value ...),表示要选择的显式值。
基于此,由于#(1 2 3 4 5)
排名为 1,因此 index-selection 需要是长度为 1 的列表,并且单个元素是形式的列表(:range start end [stride])
,在这种情况下为(:range 0 2)
。
您还可以grid:subgrid
在向量上使用:
CL-USER> (grid:subgrid #(1 2 3 4 5) '(3) '(2))
;=> #(3.0 4.0 5.0)
— 功能:grid:subgrid 网格尺寸 start &key destination drop
从现有网格的块创建网格,例如矩阵的行或块。维度给出了子网格的维度,并且 start 给出了每个索引的最小值,该索引对应于所有索引值为零的子网格元素。如果 drop 为真,则所有单轴都将被删除。
我不太熟悉 Antik 的术语,但对于向量的情况,尺寸参数似乎是您将提取多少元素的列表,而start参数是从哪里开始的列表。我的理解是基于一些实验:
CL-USER> (grid:subgrid #(1 2 3 4 5 6 7 8 9 10) '(3) '(2))
;=> #(3.0 4.0 5.0)
CL-USER> (grid:subgrid #(1 2 3 4 5 6 7 8 9 10) '(3) '(4))
;=> #(5.0 6.0 7.0)
CL-USER> (grid:subgrid #(1 2 3 4 5 6 7 8 9 10) '(2) '(5))
;=> #(6.0 7.0)