Effacer les filtres
Effacer les filtres

Unwanted line on plot

12 vues (au cours des 30 derniers jours)
Steve
Steve le 28 Fév 2012
I am plotting real time data and I have a continually updating plot. I want to show 50 points on the graph and update as more data comes in. Here is currently what I am doing:
while 1
for i=1:50
plot(x,y)
end
end
Now the problem with this is that once the for loop gets back to the first element, on the plot there is a line that connects the left most data point to the right most data point and continues until the program is stopped.
Is there anyway to get around this line?
EDIT: Adding the complete example
count = 0;
while count < 3
for i = 1 : 30
num1 = rand + 1;
Out1(i) = num1;
c=clock;
Time(i)=(c(5)+(c(6)/100));
plot(Time,Out1)
drawnow();
end
count = count + 1;
end
  1 commentaire
Jan
Jan le 28 Fév 2012
The posted code does not reproduce the problem, because x and y are not defined. Perhaps you simply wand "plot(x,y,'0')", but this is not clear.

Connectez-vous pour commenter.

Réponse acceptée

Jiro Doke
Jiro Doke le 29 Fév 2012
Is this what you're looking for?
count = 0;
Out1 = nan(1, 30);
Time = nan(1, 30);
while count < 3
for i = 1 : 30
num1 = rand + 1;
c=clock;
Out1 = [Out1(2:end), num1];
Time = [Time(2:end), (c(5)+(c(6)/60))];
plot(Time,Out1)
pause(0.1);
end
count = count + 1;
end

Plus de réponses (3)

Steve
Steve le 28 Fév 2012
Sorry about that. Here is an example of what I am doing:
count = 0;
while count < 3
for i = 1 : 30
num1 = rand + 1;
Out1(i) = num1;
c=clock;
Time(i)=(c(5)+(c(6)/100));
plot(Time,Out1)
drawnow();
end
count = count + 1;
end
A Once the array reloops to the beginning, there is a line connecting the first point to the latest/newest point. I can kind of understand why, but I guess I just don't have a clue how to get around this.

Jiro Doke
Jiro Doke le 29 Fév 2012
[Old Answer]
You're seeing that behavior because you have data points remaining from the previous loop. You can reset the variables Out1 and Time.
count = 0;
while count < 3
Out1 = nan(1, 30);
Time = nan(1, 30);
for i = 1 : 30
num1 = rand + 1;
Out1(i) = num1;
c=clock;
Time(i)=(c(5)+(c(6)/100));
plot(Time,Out1)
drawnow();
end
count = count + 1;
end
BTW, this is called Preallocation which is a good practice when you're assigning values to an array in a loop.

Steve
Steve le 29 Fév 2012
Thanks for the response. However, once 30 points fill the graph, what I want to do is continually update the graph. So when data point 31 comes in I want the first point to go away. So overally once the graph fills with data, I don't want to reset the graph.
  1 commentaire
Steve
Steve le 29 Fév 2012
This is exaclty what I am looking for. Thank you!!

Connectez-vous pour commenter.

Catégories

En savoir plus sur 2-D and 3-D Plots dans Help Center et File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by