Updating Plot "On the Fly" with MATLAB

  • Context: MATLAB 
  • Thread starter Thread starter Euclid
  • Start date Start date
  • Tags Tags
    Matlab Plot
Join the discussion
Registration is free. Ask a follow-up in this thread, or start your own.
1 reply · 10K views
Euclid
Messages
213
Reaction score
0
I am trying to write a function that will update a plot "on the fly". For instance, in the test function:
function colorplot
x = ones(100,100);
for i = 1:100
for j = 1:100
x(i,j)=uint8(255^((i+j)/200));
image(x); colormap(gray)
end
end
MATLAB will run the entire function before displaying the image in the matrix x. I want to get MATLAB to update the plot as soon as it changes a single pixel (or more generally, whenever I tell it to!). Does anyone know how to do this? The only way I have been able to close to getting this to happen is to use the "figure" command right before "image", but this just generates 100*100 images when I only want 1.

UPDATE: I found a function drawnow which performs what I want the plot to do, but it is extremely slow. drawnow redraws the whole plot but I am only updating a few pixels. Any ideas?
 
Last edited:
Physics news on Phys.org
This is not an easy task, and there is (to the best of my knowledge) no inbuilt function for this. You are asking for a function that will find the portion of the image that has been changed/updated, and change only that portion. I doubt whether something like that actually exists. I have seen Matlab redraw the plots/figures rather than change portions, not update previous plots. Maybe this can be communicated to the developers.