我有一系列分散在整个大矩阵中的点或位置,矩阵内部有一个小的边界框。我需要一种方法来检查数组中的点是否在边界框内。谢谢你的建议。
BoundingBox = [BB1,BB2,BB3,BB4];
Array = [x1,y1;x2,y2;x3,y3;x4,y4;x5,y5;x6,y6];
我试过了
ismember([BB1,BB2,BB3,BB4],Array);
和
ismember(rectangle('Position',[BB1,BB2,BB3,BB4]),Array);
但没有任何效果
答案 0 :(得分:2)
试试这个:
% Array an Nx2 matrix containing the X,Y coordinates of the points with
% respect to the big matrix
%
% BoundingBox a vector of length 4 representing the bounding box as follows:
% [minimumX, minimumY, sizeX, sizeY]
isInBox = @(M,B) (M(:,1)>B(1)).*(M(:,1)<B(1)+B(3)).*(M(:,2)>B(2)).*(M(:,2)<B(2)+B(4));
isInBox(Array,BoundingBox);
如果您将严格不等式更改为>=
和<=
,您也会接受边界框上的点。
答案 1 :(得分:1)