how to pass array using get, set from one gui to other?

2 次查看(过去 30 天)
hii I have 2 gui.In main gui I have passed array of images like dis-
> for i=1:120
> > imgs{i} = imread( sprintf('%d.jpg',idx(i) ));
> > set(0,'userdata',imgs{i})
> end
In sub gui I hav used this code to get images
>for i=21:60
> > imgs{i}= get(0,'userdata');
> end
> axes(handles.axes28)
> imshow(imgs[21])
> axes(handles.axes29)
> imshow(imgs[22]) . . . everytime I am getting 120 th image plotted in all 60 output axis... Whats wrong here pls clarify.

回答(1 个)

Jan
Jan 2015-4-28
In your code the UserData of the root object are overwritten 119 times:
for i = 1:120
imgs{i} = imread( sprintf('%d.jpg',idx(i) ));
set(0,'userdata',imgs{i})
end
Better use:
for i = 1:120
imgs{i} = imread( sprintf('%d.jpg',idx(i) ));
end
set(0,'userdata',imgs)
Now the cell imgs is stored in the UserData.
Btw., the Userdata of the root object are equivalent to using global variables. So einer rely on globals directly or consider the serious warnings about globals and avoid this dirty trick. Better store the data in the UserData or ApplicationData of a GUI instead of the root object.
  4 个评论
Adam
Adam 2015-4-28
Be aware though that data stored on the handles of one GUI is not automatically accessible within another GUI.
Probably using findobj you can yoik the handles of one GUI out to use in another, but I've never used such a ghastly approach to having two GUIs communicate with each other so I can't remember

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Creating, Deleting, and Querying Graphics Objects 的更多信息

标签

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by