is it possible to vectorise the following. I want to construct all pairs of integers (I,j) with i^2 + j^2 <= r^2, This includes negative i and j. Ideally I want a 2 by k matrix listing my pairs in lexicographic order. At the moment I use for loops.

1 visualizzazione (ultimi 30 giorni)
Given r, I want to construct all pairs of integers (i,j) with i^2 + j^2 <= r^2, This includes negative i and j. Ideally I want a k by 2 matrix listing my pairs in lexicographic order (either i_1 < i_2 or i_1==i_2 and j_1 < j_2). Can this be vectorised in Matlab? At the moment I use for loops, which doesn't matter, because I don't have to do it often. But I'm thinking a might need the fastest possible method for doing something similar in another program.
  2 Commenti
David Epstein
David Epstein il 20 Lug 2018
mostly quite small at the moment (up to around 20), but I might contemplate going up to r=200. However, in that case someone would probably do the programming for me in python or C++ on a very large and powerful machine.

Accedi per commentare.

Risposta accettata

James Tursa
James Tursa il 20 Lug 2018
One way:
[x,y] = meshgrid(-r:r,-r:r);
z = x.*x + y.*y <= r*r;
result = [x(z) y(z)];

Più risposte (0)

Community Treasure Hunt

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

Start Hunting!

Translated by