Когда вы впервые строите изображение с помощью imshow
, пусть он вернет дескриптор создаваемого им объекта изображения:
A = (the initial matrix of image data);
hImage = imshow(A);
Затем, чтобы обновить изображение новыми данными, попробуйте следующее вместо повторного вызова imshow
:
B = (modification of the original image matrix A);
set(hImage, 'CData', B);
Использование команды set
изменит объект изображения, который вы уже создали (список свойств объекта изображения можно найти здесь ).
В качестве альтернативы, вы также можете добавить дополнительные параметры к вызову imshow
, чтобы сообщить ему, в каком объекте осей будет отображаться изображение:
hAxes = (the handle to an axes object);
imshow(A, 'Parent', hAxes);
EDIT:
Для решения вашей дополнительной проблемы обмена данными графического интерфейса между функциями вам следует обратиться к документации MATLAB здесь . Как уже отмечалось, существует несколько различных способов передачи данных между различными функциями, включенными в графический интерфейс: функции вложения (упомянутые в SO здесь ) с использованием свойства объектов UserData (упомянутое в SO здесь ), или используя функции setappdata
/ getappdata
или guidata
. Параметр guidata
может быть наилучшим для использования с графическими интерфейсами, созданными в GUIDE.