function in a GUI does not return the correct value after function's parameters have been modified outside of the GUI
Ältere Kommentare anzeigen
Hi all, I have a GUI with external functions that I call inside callbacks of the GUI.
% define_Params() and compute_function() are written outside of the GUI
function params = define_Params();
params.value = 3;
end
% compute from compute_function
function outputdata = compute_function(inputdata, params)
params = define_Params();
outputdata = algo(inputdata, params ) ;
end
In my GUI, I have two callbacks:
1. function compute_pushbutton_Callback(hObject, eventdata, handles) to launch my computation
function apply_to_selectedImages_pushbutton_Callback(hObject, eventdata, handles)
params = define_Params();
outputdata = compute_function(inputdata, params) ;
% update
guidata(hObject, handles);
2. function loadParams_Callback(hObject, eventdata, handles) to load and hopefully to change the parameters for compute_function().
function loadParams_Callback(hObject, eventdata, handles)
...
% open define_Params(), this can be editable
fileattrib( [PathName, FileName],'+w' );
eval(['!"C:\Program Files (x86)\Notepad++\notepad++" ' PathName FileName])
......
% update
guidata(hObject, handles);
which opens define_Params() in Notepad++. And then, I change manually the value of params.value to 10, say, so in that function define_Params() becomes:
function [params] = define_Params()
params.value = 10;
end
I save in Notepad++, and re-launch my compute_pushbutton_Callback():
but the value of params.value is still equal to 3. in params though I changed it to 10. Also, I noticed, that sometimes, it is working and sometimes not ...
Can someone have some explanation about this, please ? And when I use debug mode, though the value is 10, it is still 3 ???
Thank you very much.
5 Kommentare
Adam
am 15 Dez. 2017
At a guess the function has been cached and does not realise it has changed.
Why would you ever want to have code that opens .m files for you to edit data in though???? You said you have a GUI so why wouldn't the values be supplied there if they are for the user to edit? Or in a .mat file which is the normal place to save data, not in a dynamic .m file.
Maia
am 15 Dez. 2017
Maia
am 18 Dez. 2017
Stephen23
am 18 Dez. 2017
Akzeptierte Antwort
Weitere Antworten (0)
Kategorien
Mehr zu Programming finden Sie in Hilfe-Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!