필터 지우기
필터 지우기

locate particles in squares (combinatorics)

조회 수: 3 (최근 30일)
Mikhail
Mikhail 2014년 10월 16일
댓글: Mikhail 2014년 10월 16일
I have a problem: I have a lot of particles with given coordinates (x,y). My (x,y) plane is divided into a bunch of squares 32x32. I need a fast way to identify, which particles belongs to which square.
Input data: data(Nx3)=(x1,y1,id1;x2,y2,id2,....) - array with particles coordinates and id's. Also could have array with id's of squares, like: (x1,y1,x2,y2,id#; ...)
What I want on output is array out(Nx2) containing id of particle and corresponding square id.
I don't need you to write a code for me. I want just idea -how to do it in the most fast and convinient way. Thanks

채택된 답변

Guillaume
Guillaume 2014년 10월 16일
If you divide the x and y coordinates of your particles by your square size, you get in which column/row square your particles are in. Then just convert that into linear indexing with sub2ind (assuming you use the same column-major ordering as matlab). You can do the calculation on all particles at once, something like:
colsquare = floor(data(:, 1) / 32) + 1;
rowsquare = floor(data(:, 2) / 32) + 1;
squareidx = sub2ind([numsquarey numsquarex], rowsquare, colsquare);
out = [data(:, 3) squareidx];
  댓글 수: 1
Mikhail
Mikhail 2014년 10월 16일
wow, that appeared to be easy... thanks

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Discrete Math에 대해 자세히 알아보기

태그

제품

Community Treasure Hunt

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

Start Hunting!

Translated by