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

2 vues (au cours des 30 derniers jours)
preeti
preeti le 28 Avr 2015
Commenté : preeti le 28 Avr 2015
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.

Réponses (1)

Jan
Jan le 28 Avr 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 commentaires
Adam
Adam le 28 Avr 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 le 28 Avr 2015
thanks @Jan Simon and @Adam wil find it out..:)

Connectez-vous pour commenter.

Catégories

En savoir plus sur Creating, Deleting, and Querying Graphics Objects dans Help Center et File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by