Given the location (coordinates) of a point in a gridmesh, how can I extract the number of the grid that the point is located in?
16 views (last 30 days)
Show older comments
Arian Abedin
on 19 Jan 2018
Commented: Kelly Kearney
on 19 Jan 2018
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
0 Comments
Accepted Answer
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
3 Comments
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
More Answers (0)
See Also
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!