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 visualización (últimos 30 días)
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 comentarios
David Epstein
David Epstein el 20 de Jul. de 2018
I should have said that I am using Matlab R2018a on a MacBook Pro running MacOS 10.13.6
David Epstein
David Epstein el 20 de Jul. de 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.

Iniciar sesión para comentar.

Respuesta aceptada

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

Más respuestas (0)

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by