我有一个Matlab patch
对象,其中 Faces
属性是顶点索引三元组的列表,因此每行代表一个三角形面 . 例如:
293 13 1
433 13 293
293 294 433
434 433 294
在这种情况下,第一行定义在顶点1,13和293之间拉伸的面 . 我的实际矩阵具有大约200,000个顶点和400,000个面 .
我想形成一个顶点邻接矩阵,例如稀疏二进制方阵 A
s.t. A(i,j)
是 true
iff顶点 i
, j
有共享面 .
有没有有效的方法在matlab中做到这一点?在每次迭代中搜索一个面的出现的简单 for
循环很慢 .
2 回答
这可以用于任意维度的单纯数据:
如果内存开销比速度更重要,那么你可以循环边缘:
另一种方法是构建一个
triangulation
对象,然后使用内置的isConnected函数 .使用
sparse
构造函数,让nv
为您拥有的顶点数