Filter löschen
Filter löschen

Unwanted line on plot

12 Ansichten (letzte 30 Tage)
Steve
Steve am 28 Feb. 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 Kommentar
Jan
Jan am 28 Feb. 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.

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Jiro Doke
Jiro Doke am 29 Feb. 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

Weitere Antworten (3)

Steve
Steve am 28 Feb. 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 am 29 Feb. 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 am 29 Feb. 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 Kommentar
Steve
Steve am 29 Feb. 2012
This is exaclty what I am looking for. Thank you!!

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu 2-D and 3-D Plots finden Sie in Help Center und File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by