How do you plot arrays with each element being a point on the graph with the elements within the arrays updating within a for loop?
Show older comments
Hello, I've got a couple vectors that I need to plot.
Ex.
x=[24 35 66 75];
y=[5 15 34 45];
And the elements in the arrays are changing because it is within a for loop with kinematic equations for projectile motion. I originally had it working when x and y were just scalar values using:
plot(x,y,'rs','MarkerSize',20);
When I changed the for loop to accept multiple values via arrays and update the numbers within, I couldn't get the plot function to work.
I have something to the extent a nested for loop in the for loop, looking like:
for ii=1:length(x)
etc etc etc...
more physics..more physics..
for jj=1:length(x)
etc etc etc...
plot(x(jj),y(jj),'rs','MarkerSize',20);
end
end
When I have something to the extent of that, my graph freaks out and the square is jumping to each of the values within the arrays. How do I get it to plot each of the squares as a plot(x(1),y(1)); plot(x(2),y(2)); etc..? The arrays also aren't set lengths because the user gets to input how many blocks will be in this tower.
Thanks in advance,
Tyler
Answers (2)
Image Analyst
on 2 Oct 2014
0 votes
Put the plot() after the loop and plot the whole thing at one time. Or else if you want to plot one marker at a time inside the loop, like for animation purposes or something, then make sure you put "hold on" after you plot the first marker.
5 Comments
Image Analyst
on 3 Oct 2014
Yes. Is that undesired? What you said you want is what it does. We just need to know if you're plotting the n'th marker, do you want all the prior n-1 markers up there also, or do you just want the n'th marker alone?
With hold on, if it looks like a big red sharpie then the markers must be so close together that the overlap, or else your markers are too large. How many points are you plotting? If you have just a few dozen it should be okay, especially if you enlarge your plot. If you have thousands, or more markers than pixel columns in your screen, then yes they will overlap and look like a solid line.
Tyler
on 4 Oct 2014
Image Analyst
on 4 Oct 2014
Can't you just do
for jj=1:length(x)
% etc etc etc...
plot(x(jj-2:jj),y(jj-2:jj),'rs','MarkerSize',20);
end
Each time in the loop it would most recent 3 markers and clear all the prior ones, as long as you didn't have "hold on". Of course you must adjust the first index to make sure it doesn't go less than 1.
Tyler
on 4 Oct 2014
Star Strider
on 2 Oct 2014
0 votes
I’m not certain that I understand what you want to do, but I get the impression you want to do Animation.
7 Comments
Tyler
on 2 Oct 2014
Star Strider
on 2 Oct 2014
I’ve done some for my own amusement, but they were fairly simple. There are 82 MathWorks Blog posts on Animation. The Blogs are always good (IMO), I’ve watched a lot of them over the years, and I recommend them. There are probably several that bear on what you want to do. I’ll also be glad to provide what help I can.
Tyler
on 3 Oct 2014
Star Strider
on 3 Oct 2014
I’m missing ‘collision’. Please attach it and I’ll follow up in the morning.
Tyler
on 4 Oct 2014
Star Strider
on 4 Oct 2014
Correct. I’ll take a look.
Tyler
on 4 Oct 2014
Categories
Find more on 2-D and 3-D Plots in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!