MATLAB Updating Plot "On the Fly" with MATLAB

  • Thread starter Thread starter Euclid
  • Start date Start date
  • Tags Tags
    Matlab Plot
AI Thread Summary
The discussion centers on creating a MATLAB function to update a plot dynamically, specifically to refresh the display after changing individual pixels in a matrix. The initial approach involves using a nested loop to modify a 100x100 matrix and display it using the image function. However, MATLAB processes the entire function before rendering the image, which is not the desired behavior. The user attempts to use the "figure" command to force updates but ends up generating multiple images instead of a single updated plot. An update mentions discovering the "drawnow" function, which allows for plot updates but is criticized for being slow as it redraws the entire plot rather than just the modified pixels. The conversation highlights the challenge of efficiently updating only portions of a plot in MATLAB, with a consensus that there is no built-in function to achieve this, suggesting a potential need for communication with MATLAB developers regarding this limitation.
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.
 

Similar threads

Replies
8
Views
2K
Replies
4
Views
2K
Replies
1
Views
2K
Replies
1
Views
2K
Replies
3
Views
2K
Replies
2
Views
3K
Back
Top