Matlab - cielo estrellado

 
Vista:

cielo estrellado

Publicado por Sara (1 intervención) el 06/09/2010 19:29:16
A ver si alguien me puede ayudar con una duda que tengo.
Tengo que hacer un cielo estrellado y que se represente con el símbolo (o) las estrellas que estén más cercanas y con el símbolo (*) las que estén más lejanas.
He probado haciendo esto, pero creo que no coloco bien los plot dentro de la función ya que me da un bucle infinito y se me cierra el matlab.

function estrellas(n)
x=rand(n);
y=rand(n);
p=sqrt((x.^2)+(y.^2));
i=1;
s=0;
while i<=n
if p(i)<=1
s=s+1
plot(x,y,'*')
else
plot(x,y,'o')
i=i+1
end
end

Gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:cielo estrellado

Publicado por Jorge (226 intervenciones) el 09/09/2010 01:04:59
Dado que no llevas a cabo ningún 'hold on' en la figura, cada vez que realizas un 'plot' se borra lo anterior.

'i' sólo se incrementa en la parte final del 'if'. Si los valores de 'p' no son mayores a 1, entonces 'i' nunca se incrementará y por tanto el ciclo no terminará.

O sea, ese código tiene problemas de lógica.

Hice pequeñas modificaciones a tu código, pero tienes que ajustar los rangos que consideras 'lejanos' o 'cercanos'. Date cuenta que 'rand' sólo genera valores entre 0 y 1.

function estrellas(n)
x=rand(1,n); y=rand(1,n);
p=sqrt((x.^2)+(y.^2));
i=1;

figure; hold on

while i<n
if p(i)<=.7
plot(x(i), y(i),'*')
i = i+1;
else
plot(x(i), y(i),'o')
i=i+1;
end
end

La solución obviamente no es única. Esta es sólo una versión posible, para conservar tu código.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar