24 views (last 30 days)

I have an issue where I want to assign points to a specific grid number in a 2D gridmesh. For example, let's say I have a square divided into 4 grids: 1,2,3 and 4.

Now, if I know the coordinates of a point (x,y), I want to find out in which of these 4 grids (or quadrants) the point is located at, and extract the number of that grid.

For example, lets say I have a square with side lengths 1, divided into 4 equally large grids numbered 1,2,3 and 4 from left to right (the way you would read a book).

Each grid will then have sides of length 0.5. Then, a point with coordinates (0.75,0.75) would clearly exist in grid nr 2 assuming we use a standard x-y coordinate system with Origin at the bottom left corner of the square. How can I extract this grid number (4) in matlab?

Thanks in advance!

Best regards, Arian

Kelly Kearney
on 19 Jan 2018

You can use the discretize function to bin points:

nx = 2;

ny = 2;

xedge = linspace(0,1,nx+1);

yedge = linspace(0,1,ny+1);

xpt = 0.75;

ypt = 0.75;

xbin = discretize(xpt, xedge); % which column?

ybin = discretize(ypt, yedge); % which row?

idx = sub2ind([ny, nx], ybin, xbin); % traslate row/column to index

Kelly Kearney
on 19 Jan 2018

You can adjust the above example by flipping the y-coordinates for the y-bin calculation (so row 1 corresponds to the highest y value) and flip-flopping the x and y coordinates in the sub2ind call (so the matrix is traversed row-wise instead of column-wise:

nx = 3;

ny = 3;

side = 2.4;

xedge = linspace(0,side,nx+1);

yedge = linspace(0,side,ny+1);

xpt = 1.8;

ypt = 1.65;

xbin = discretize(xpt, xedge); % which column?

ybin = discretize(-ypt, -yedge(end:-1:1)); % which row?

idx = sub2ind([nx, ny], xbin, ybin) % translate row/column to index

Opportunities for recent engineering grads.

Apply TodayFind the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!
## 0 Comments

Sign in to comment.