Unwanted line on plot

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

0 Stimmen

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

0 Stimmen

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

0 Stimmen

[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

0 Stimmen

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 Graphics Performance finden Sie in Hilfe-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