guidata doesn't save my data, why?

2 visualizaciones (últimos 30 días)
László Arany
László Arany el 5 de Jul. de 2012
I have a GUI made in GUIDE. I need to store some data within functions and they must be reachable by other callbacks. I am using guidata like the following:
function MyFunction(input1,input2,...,inputN)
MyData = CalculateMyData(inputs);
handles.DataToSave = MyData;
guidata(gcf(),handles)
end
Later in another Callback I'm trying to get back the data and save it to a file like the following:
function SaveData(handles)
SavedData = handles.DataToSave;
dlmwrite(MyFile,SavedData,'\t')
end
However, the field DataToSave no longer exists. I know that the handles and the guidata are not the same structure, therefore I tried the following code as well:
function SaveData(handles)
MyGUIData = guidata(gcf());
SavedData = MyGUIData.DataToSave;
dlmwrite(MyFile,SavedData,'\t');
end
Unfortunately this code does not work either. How can I solve this problem? Any help is appreciated. László

Respuesta aceptada

Luffy
Luffy el 5 de Jul. de 2012
Editada: Walter Roberson el 13 de Ag. de 2012
I did not exactly understand,but you can try this method:
The data that you want to save in your 1st function,save it to base workspace.
assignin('base','handles.DataToSave','MyData');
Now that it is saved in base workspace,use it in your 2nd function by.
v = evalin('base','handles.DataToSave');
That Data is now in v,use v in your function where you wnt to.
Just see u hv handles.DataToSave in your base workspace.
Or this should help:

Más respuestas (3)

László Arany
László Arany el 5 de Jul. de 2012
Well, this does the trick, however, I still don't understand why my method doesn't work.

Andrei
Andrei el 13 de Ag. de 2012
Editada: Andrei el 13 de Ag. de 2012
I have a similar problem. But I do not understand the cause

Sean de Wolski
Sean de Wolski el 13 de Ag. de 2012
I am guessing that the use of gcf() is what is making this not work. If the figure's HandleVisibility is 'off' or 'callback', gcf() will create a new figure to be the current figure.
To fix it, rather than using gcf, use handles.( Tag of your figure ).

Community Treasure Hunt

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

Start Hunting!

Translated by