这是一个Matlab代码:
new=[];
for i=1:size(p,1)
if (alpha*p(i,1)+beta*p(i,2)+gamma*p(i,3)-sigma)>0
new=[new;p(i,:)];
end
end
此处p
是一个大型数组,如300000x3。通过从new
数组中删除一些3元组来获取p
数组。为此,if
检查已完成。但这需要很多时间。
我希望对代码进行矢量化,例如获取一个二进制数组,其中1表示保留的点数,0表示删除的点数。然后使用这些标志,我们可以更快地构造new
数组。我对吗?有人可以提供矢量化或加速上述代码的代码吗?
答案 0 :(得分:0)
这样的事情应该有效
selectRows = (alpha*p(:,1)+beta*p(:,2)+gamma*p(:,3)-sigma)>0;
new = p(selectRows, :);