2016-08-16 59 views
-1

这是一个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数组是通过从p数组中删除一些3元组获得的。为此,if检查完成。但是这需要很长时间。

我想向量化代码,如获得一个二进制数组,其中1为保留点,0为删除点。然后使用这些标志,我们可以更快地构建new阵列。我对吗?有人可以为矢量化或加速上述代码提供代码吗?

+0

_“能有人给的代码向量化或超速上面的代码?” _。对不起,这不是它如何在SO上工作。下次你写一个问题时,首先尝试自己对此进行矢量化并提供你的努力。你也很有可能自己设法做到这一点,并学习一些积极的副作用。 – patrik

回答

0

像这样的东西应该工作

selectRows = (alpha*p(:,1)+beta*p(:,2)+gamma*p(:,3)-sigma)>0; 
new = p(selectRows, :);