locate particles in squares (combinatorics)

5 vues (au cours des 30 derniers jours)
Mikhail
Mikhail le 16 Oct 2014
Commenté : Mikhail le 16 Oct 2014
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

Réponse acceptée

Guillaume
Guillaume le 16 Oct 2014
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 commentaire
Mikhail
Mikhail le 16 Oct 2014
wow, that appeared to be easy... thanks

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Elementary Math dans Help Center et File Exchange

Produits

Community Treasure Hunt

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

Start Hunting!

Translated by