Clear Filters
Clear Filters

Figure Plot Slow

1 view (last 30 days)
Yonghe
Yonghe on 4 Mar 2011
A Matlab program plots DATA at run time. X axis is time, DATA is an event flag we monitor. If the event happens at time 2ms, then a dot is placed (plotted) at time 2ms. For each trial, we have a sequence of the event that happened at times. Y axis is Trial number. I used ‘hold on’ to plot on the same figure as new trials coming in. The problem is: at the beginning of the plot figure (new figure), the plot goes fast, but as more trials plotted, it becomes really slow. Could someone help me on what the cause could be? How to resolve? Thank you!

Accepted Answer

Walter Roberson
Walter Roberson on 4 Mar 2011
Instead of plotting more and more objects on the same plot, it is better to use scatter() and record the handle and then as more data comes in, set() the XData and YData properties of the handle to an array that includes all of the data.
h = scatter(...)
set(h,'XData', [get(h, 'XData'), newxvals], ...
'YData', [get(h, 'YData'), newyvals])
  3 Comments
Walter Roberson
Walter Roberson on 4 Mar 2011
Yes, this will work fine as long as you always add the same number of x and y. The new x and y values will need to be in column vectors for this to work.
Yonghe
Yonghe on 7 Mar 2011
Update after testing:
I noticed that 'plot' runs faster than 'scatter' for my case. I used your suggestion of utilizing handler with 'plot' and the speed improved significantly.
Thank you, Walter, again!

Sign in to comment.

More Answers (0)

Tags

Community Treasure Hunt

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

Start Hunting!