How to plot six concentric circles using meshgrid and plot?

7 Ansichten (letzte 30 Tage)
Yuval
Yuval am 27 Mär. 2013
I am trying to plot six concentric circles using meshgrid() and plot(). The circles' radii vary between 0.5 and 1.75 (with intervals of 0.25). I am wondering whether the code below is sufficiently efficient and whether indeed it should be performed as delineated below:
theta = linspace(0, 2*pi, 50);
[X, Y] = meshgrid(0.5:0.25:1.75, theta);
plot(a+cos(Y).*X, b+sin(Y).*X);
?

Akzeptierte Antwort

Matt J
Matt J am 27 Mär. 2013
You could conserve a little memory if you did it this way, but I don't know anyone who cares about efficiency for such a small plotting task,
theta = linspace(0, 2*pi, 50).';
R=0.5:0.25:1.75;
plot(a+cos(theta)*R, b+sin(theta)*R);
  8 Kommentare
Yuval
Yuval am 27 Mär. 2013
Bearbeitet: Yuval am 27 Mär. 2013
I mean I ran mine, the original one I posted here, in which the transpose was clearly omitted, and yet the plot was just as that generated by your own code, with the transpose. Is that still impossible? Did you mean to suggest that that is strictly mandatory if R is defined as you proposed? Please allow me to re-post what works perfectly fine on this machine:
theta = linspace(0, 2*pi, 50); R = 0.5: 0.25: 1.75; [X, Y] = meshgrid(R, theta); plot(a+cos(Y).*X, b+sin(Y).*X);
Matt J
Matt J am 27 Mär. 2013
Bearbeitet: Matt J am 27 Mär. 2013
Yes, the transposition of theta was only relevant to my proposed approach -- the one that does not use meshgrid. Notice that you use elementwise .* multiplication whereas I use pure matrix multiplication '*'. Matrix multiplication requires the operands to be appropriately shaped.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Community Treasure Hunt

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

Start Hunting!

Translated by