次のコードを「ベクトル化」する方法を探しています。つまり、時間がかかっている 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
最初は Matlabfind
関数 (例: find(coords(k,1)<=4)
) を使用しようとしましたが、私の場合、「見つける」必要がある 2 つのパラメーターがあります。のようなものを試しましfind(coords(:,1)<=4 && coords(:,2)<=8)
たが、 のオペランドが&&
スカラーではないため、これは機能しません。これを行う方法についてのアイデアは大歓迎です!