locate particles in squares (combinatorics)

5 ビュー (過去 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 Center および File ExchangeElementary Math についてさらに検索

タグ

製品

Community Treasure Hunt

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

Start Hunting!

Translated by