我有一个面部列表"faces",形式为n x 3 .
每行包含来自n×3顶点列表的3个不同行的3个索引 . (因此每个值是包含顶点的3个坐标的行的索引 .
在我的矢量“索引”中,形式为n x 1,我存储了我感兴趣的顶点索引 .
现在我想看看我的“面部列表”中的这些索引来自我的矢量“indices” .
目前我循环遍历我的面部列表以获得"vector s",其中包含"faces list"行的索引 .
为了提高性能,我预先将"vector s"分配给零 .
是否有更快的方法来获得相同的结果?
s = zeros(9000000,1);
aa = 0;
for a = 1:size(indices,1)
[i,j] = find (faces == indices(a));
s(aa+1:aa + size(i,1),1) = i;
aa = aa + size(i,1);
end
ss = s(any(s,2),:);
faces = faces(ss(:,1),:);
谢谢您的帮助 . 不幸的是,我不熟悉matlab,并且仍然无法对我的代码进行矢量化 .
1 回答
这里的关键是使用ismember . 这为您提供了一个逻辑数组,即第一个数组的元素等于第二个数组中的任何元素,在这种情况下
faces
和indices
.作为一个玩具的例子,
从那里开始,您可以像以前一样继续查找其中包含任意值的行 .