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

2 views (last 30 days)
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.

Answers (1)

Jan
Jan on 28 Apr 2015
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 Comments
Adam
Adam on 28 Apr 2015
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
preeti
preeti on 28 Apr 2015
thanks @Jan Simon and @Adam wil find it out..:)

Sign in to comment.

Categories

Find more on Environment and Settings in Help Center and File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!