我正在寻找一种“向量化”以下代码的方法。也就是说,我想摆脱这个for循环,因为它花费了很长时间(这个for循环嵌套在另一个重复超过40,000次的for循环中)。
for k=1:length
if coords(k,1)<=4 && coords(k,2) <=8
upperLeft(countUL,:) = coords(k,:);
countUL=countUL+1;
end
if coords(k,1)>4 && coords(k,2) <=8
upperRight(countUR,:) = coords(k,:);
countUR=countUR+1;
end
if coords(k,1)>4 && coords(k,2) >8
lowerRight(countLR,:) = coords(k,:);
countLR=countLR+1;
end
if coords(k,1)<=4 && coords(k,2) >8
lowerLeft(countLL,:) = coords(k,:);
countLL=countLL+1;
end
end
我最初尝试使用Matlab的find
函数(例如find(coords(k,1)<=4)
),但在我的情况下,我需要“查找”两个参数。我尝试了类似find(coords(:,1)<=4 && coords(:,2)<=8)
的东西,但由于&&
的操作数不是标量,所以这样做行不通。有没有什么好的方法可以解决这个问题?非常感谢!
length
作为变量名(或者那可能是一个打字错误)。 - Jonas