How to efficiently update an image if one matrix element is changed
Show older comments
I have a matrix in which I change only one element in every iteration of a loop. I want to display that matrix as an image using image or imagesc. What I am doing now is to update the CData property of the image handle so as to refresh the image of the matrix. With several thousands of iterations, it turned out that the bottleneck is the image/imagesc function according to the Profiler. So I thought of changing the color of the tile corresponding to the changed matrix entry. How can I do that? There would be no problem with the colormap since the matrix only contains zeros and ones.
9 Comments
Matt J
on 18 Oct 2015
With several thousands of iterations, it turned out that the bottleneck is the image/imagesc function according to the Profiler.
But why is image/imagesc being called repeatedly? Don't you call it just once? You said your updates are done just by altering the CData property.
Jan
on 18 Oct 2015
Please post your code. Without seeing the code it is impossible to guess, why image is the bottleneck, although you do not use this command, but the more efficient updating of the CData property only.
Zoltán Csáti
on 18 Oct 2015
dpb
on 18 Oct 2015
The obvious slowdown in the above is
% Pause between the steps for a while
pause(0.2);
I'd think if you removed that it'd be blindingly fast (so to speak)
Zoltán Csáti
on 18 Oct 2015
dpb
on 18 Oct 2015
Might try just X'or the positions that change instead of setting the whole array.
Show profiler results for the code actually run
Zoltán Csáti
on 18 Oct 2015
Walter Roberson
on 18 Oct 2015
If you are using R2014a or earlier, EraseMode 'xor' can be used to potentially speed up drawing. As of R2014b that is no longer an option.
dpb
on 18 Oct 2015
Ewwww...that's a bummer, indeed! I'd also not thought of HG2 and latest releases in performance...I understand there is, so far at least, a big dropoff there.
Accepted Answer
More Answers (0)
Categories
Find more on Graphics Object Properties in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!