-2

大きなマトリックス全体に散在する点または位置の配列があり、マトリックス内に小さな境界ボックスがあります。配列内のポイントが境界ボックス内にあるかどうかを確認する方法が必要です。ご提案いただきありがとうございます。

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);

しかし、何も機能していません

4

2 に答える 2

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);

厳密な不等式を に変更する>=<=、バウンディング ボックス上のポイントも受け入れます。

于 2013-10-16T22:42:51.657 に答える
1

ismember()のドキュメントをより注意深く読む必要があります。

セット配列のメンバーである配列要素

したがって、このチェックは集合操作に関連しています。

代わりに、 を使用inpolygon()して、ポイントがポリゴン内にあるかどうかを確認する必要があります。

于 2013-10-16T22:33:04.930 に答える