Generate random coordinates around a circle

How can I generate 15 random 2-D coordinates around a circle of radius R with the center of the circle being a defined [x y] 2-D coordinate? Thanks

4 commentaires

Cedric
Cedric le 31 Juil 2013
What have you tried so far?
John
John le 31 Juil 2013
I can generate the random coordinates within R (below) but I don't know how to change them so that they are distributed around coordinate, say [20 30]
R.*rand(15,2)
Richard Brown
Richard Brown le 31 Juil 2013
Hint: polar coordinates
John
John le 31 Juil 2013
Unfortunately, I rarely use Matlab, I have no clue how to do it even with the polar coordinates hint

Connectez-vous pour commenter.

Réponses (2)

Azzi Abdelmalek
Azzi Abdelmalek le 31 Juil 2013
Modifié(e) : Azzi Abdelmalek le 1 Août 2013
x0=10; % x0 an y0 center coordinates
y0=20;
radius=10; % radius
angle=-pi:0.1:pi;
angl=angle(randperm(numel(angle),15));
r=rand(1,15)*radius;
x=r.*cos(angl)+x0;
y=r.*sin(angl)+y0;
xc=radius.*cos(angle)+x0;
yc=radius.*sin(angle)+y0;
scatter(xc,yc,'.r')
hold on
scatter(x,y)
xlim([-radius radius]+x0)
ylim([-radius radius]+y0)
axis square
hold off

2 commentaires

Richard Brown
Richard Brown le 1 Août 2013
Modifié(e) : Richard Brown le 1 Août 2013
Again, you're choosing from an artificially finite set (63) of evenly spaced angles there. Also, this method will cluster points near the centre of the circle.
John
John le 1 Août 2013
The link http://matlab.wikia.com/wiki/FAQ#How_do_I_create_a_set_of_random_locations_within_a_circle.3F provided by Richard Brown worked, Thanks you all for your help

Connectez-vous pour commenter.

Azzi Abdelmalek
Azzi Abdelmalek le 31 Juil 2013
Modifié(e) : Azzi Abdelmalek le 31 Juil 2013
x0=10; % x0 and y0 are center coordinates
y0=20;
r=1; % radius
angle=-pi:0.1:pi;
angl=angle(randi(numel(angle),15,1))
x=r*cos(angl)+x0
y=r*sin(angl)+y0
scatter(x,y)
xlim([-r r]+x0)
ylim([-r r]+y0)
axis square

5 commentaires

I presume you mean
angl = 2*pi*rand(1, 15)
John
John le 31 Juil 2013
This seems to work but the coordinates seem to be distributed along the circle circumference. Is there a way to distribute them all over the circle? Thanks
Richard Brown
Richard Brown le 31 Juil 2013
Modifié(e) : Richard Brown le 31 Juil 2013
I seem to recall Roger Stafford answering this very question maybe yesterday? Could be worth trawling through recent questions to have a look. edit Actually, it was a while ago, but it got updated yesterday:
Azzi Abdelmalek
Azzi Abdelmalek le 31 Juil 2013
Do you mean inside the circle?
Azzi Abdelmalek
Azzi Abdelmalek le 31 Juil 2013
Richard, I think it's better to use randperm, with rand or randi there is a risk to have repetition

Connectez-vous pour commenter.

Catégories

En savoir plus sur Random Number Generation dans Centre d'aide et File Exchange

Question posée :

le 31 Juil 2013

Community Treasure Hunt

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

Start Hunting!

Translated by