Effacer les filtres
Effacer les filtres

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 vue (au cours des 30 derniers jours)
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 commentaires
David Epstein
David Epstein le 20 Juil 2018
I should have said that I am using Matlab R2018a on a MacBook Pro running MacOS 10.13.6
David Epstein
David Epstein le 20 Juil 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.

Connectez-vous pour commenter.

Réponse acceptée

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

Plus de réponses (0)

Catégories

En savoir plus sur Call Python from MATLAB dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by