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?
조회 수: 13 (최근 30일)
이전 댓글 표시
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
채택된 답변
Kelly Kearney
2018년 1월 19일
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
Kelly Kearney
2018년 1월 19일
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
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Geographic Plots에 대해 자세히 알아보기
제품
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!