MATLAB: Inpolygon command for multiple areas

inpolygon

Hi all,
In part of my code I am intrested in realizing whether a point = (x,y) is withing multiple areas or not. Here, each area is a polygon (simply a square) that have the coordination of its center locater which I can calcuate the corner points.
I learnt that by using "inpolygon" comman I can realize whether my point is withing that polygon(or on its edge). Hoever, I am interested to recognize what area whose the point is withing.
i.e. I have area1, area2 and area3.
I set following variables:
% definig all the areas coordination
xv = [1 2 2 1 1 NaN 4 4 5 5 4 NaN 6 6 7 7 6];
yv = [0 0 3 3 0 NaN 1 2 2 1 1 NaN 4 5 5 4 4];
x = 1.5;
y = 3;
in = inpolygon(x,y,xv,yv);
I can find that my point is within one of the three defined areas (Here is within the area1). But how can I say the point is within what area specifically?
I would appreciate if get some help in this,
Best

Best Answer

This should do it:
Note that that function expects polygons to be defined with clockwise vertices (counterclockwise is reserved for holes), so you'd have to preprocess your vertices:
xv = [1 2 2 1 1 NaN 4 4 5 5 4 NaN 6 6 7 7 6];
yv = [0 0 3 3 0 NaN 1 2 2 1 1 NaN 4 5 5 4 4];
x = 1.5;
y = 3;
[xv, yv] = poly2cw(xv, yv);
[in, idx] = inpolygons(x, y, xv, yv]