How to call the Callback function (in a subfunction of another Callback function)?
23 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
QiQin Zhan
il 4 Mar 2013
Commentato: Darshan Shah
il 25 Nov 2016
The following is my code:
function pushbutton1_Callback(hObject, eventdata, handles)
body
function pushbutton2_Callback(hObject, eventdata, handles)
subfun(hObject, eventdata, handles) % sub(...) is a subfunction or a .m file
function subfun(hObject, eventdata, handles)
pushbutton1_Callback(hObject, eventdata, handles) % call pushbutton1_Callback
It's strange that matlab show the error message:
Undefined function 'pushbutton1_Callback' for input arguments of type 'struct'. I want to know how to call the function 'pushbutton1_Callback()' in function 'subfun()'.Thanks
0 Commenti
Risposta accettata
Sean de Wolski
il 4 Mar 2013
You will have to pass the subfunction handles back from the main function:
%%%begin main.m%%%%
function [y, fh] = main(x)
y = pi*x;
fh = @subfun
function Q = subfun(a,b)
Q = a+b
%%%end main.m%%%
Now when you call main: you get the function handle back.
[y,fh] = main(2);
fh(1,2);
1 Commento
Darshan Shah
il 25 Nov 2016
Can you explain this in detail. I am struggling to use this explanation. I am new to GUIDE and programming.
Più risposte (2)
Jan
il 4 Mar 2013
The error message means, that:
- either the function pushbutton1_Callback is not visible ftom subfun(), e.g. if the callback is a subfunction of an M-file, but subfun() is stored in another M-file.
- or you use a struct as first input, while the callback requires the handle of the button as 1st input:
pushbutton1_Callback(ButtonHandle, EventData, handles)
Here EventData could be the empty matrix, if the callback function can handle this.
0 Commenti
QiQin Zhan
il 4 Mar 2013
2 Commenti
Jan
il 4 Mar 2013
Modificato: Jan
il 4 Mar 2013
@Chan: Is this a comment? If so, does it concern my answer? If so, please post this as a comment to reduce the confusion level.
Only the first function of an M-file can be called from other M-files. So either include a wrapper, such that the 1st function forwards the call to different subfunctions, or save the functions to individual M-files.
Vedere anche
Categorie
Scopri di più su Environment and Settings in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!