看到doc中说现在kernel可以返回ti.Vector,可以给个例子吗

在函数后面写->ti.Vector()似乎并不行

Hi @shiro, 抱歉我们的文档还在持续完善中。

关于kernel能返回 ti.Vectorti.Matrix, 我写了一个小例子你可以参考:

import taichi as ti
ti.init()


A = ti.Vector.field(3, ti.f32, ())
B = ti.Matrix.field(2,2, ti.i32, ())


@ti.kernel
def test_vector()-> ti.types.vector(3,ti.f32):
	return ti.Vector([1.0, 3.0, 4.0])

@ti.kernel
def test_matrix() ->ti.types.matrix(2,2,ti.i32):
	return ti.Matrix([[1,2],[3,4]])

A[None] = test_vector()
print(A[None])

B[None] = test_matrix()
print(B[None])

如果想要了解更多细节可以参考相关的PR:here

不太理解ti.Vector和ti.field的区别,看文档发现基本都使用field代替了ti.Vector是为什么?

ti.Vector 是一个向量,它可以是 ti.Vector.field 中的一个元素。

ti.field, ti.Matrix.fieldti.Vector.field 都有一个shape, 你可以认为这个shape就是一个网格,每个网格顶点存储的是一个元素,如果元素是标量值就用 ti.field,如果是向量就用 ti.Vector.field,。。。

如果你对物理中的概念有了解的话会很容易理解这个概念。更详细的说明,还是请看我们的文档:here and here.