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?

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: