Plotting multiple objects on same axis
5 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Jide Williams
el 26 de Oct. de 2018
Comentada: Jide Williams
el 26 de Oct. de 2018
I am new to MATLAB but I am trying to plot multiple circles on the same axis. I am using rand function to generate the centers because I want some of them to overlap, but it ends up plotting just one circle. Below is my code;
r = 0.005; x = rand(100,1); y = rand(100,1); th = 0:pi/100:2*pi; for i = 1:length(x) & 1:length(y) a = r*cos(th) + x(i); b = r*sin(th) + y(i); axis tight; hold on plot(a,b) end
0 comentarios
Respuesta aceptada
Kevin Chng
el 26 de Oct. de 2018
Editada: Kevin Chng
el 26 de Oct. de 2018
r = 0.005;
x = rand(100,1);
y = rand(100,1);
th = 0:pi/100:2*pi;
for i = 1:1:length(x)
a = r*cos(th) + x(i);
b = r*sin(th) + y(i);
figure(1)
axis tight;
hold on
plot(a,b)
pause(0.1)
end
Slight change your code, it is very interesting, if you add pause(), then you see the animation. However, you delete the pause() if you don't want it.
0 comentarios
Más respuestas (3)
madhan ravi
el 26 de Oct. de 2018
Editada: madhan ravi
el 26 de Oct. de 2018
r = 0.005;
x = rand(100,1);
y = rand(100,1);
th = 0:pi/100:2*pi;
a=zeros(1,numel(x)) % preallocation for speed and efficiency
b= zeros(1,numel(y))
for i = 1:numel(x)
a(i) = r*cos(th(i)) + x(i);
b(i) = r*sin(th(i)) + y(i);
end
axis tight;
hold on
plot(a,b,'ob')
7 comentarios
jonas
el 26 de Oct. de 2018
Yep, you are entirely correct in that it's a poorly written question. One of the things you learn on this forum is filling in blanks and interpreting ambiguities, which is actually quite useful when teaching :)
With that said, the notations r and the values of th (0 to 2pi) and the fact that OP accepted @Keving Chng's answer would imply that OP intended the radius to go as input.
madhan ravi
el 26 de Oct. de 2018
Wow thanks Jonas completely agree with you , one thing experience is gained day by day :)
jonas
el 26 de Oct. de 2018
If you have the image processing toolbox available, then there is a one-line solution to your problem.
viscircles([x,y],ones(size(x)).*r)
6 comentarios
jonas
el 26 de Oct. de 2018
Viscircles basically does the same thing as your code, but probably more effeciently. I have not actually timed and compared.
Ver también
Categorías
Más información sobre Annotations en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!