How to call the Callback function (in a subfunction of another Callback function)?
조회 수: 23 (최근 30일)
이전 댓글 표시
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
채택된 답변
Sean de Wolski
2013년 3월 4일
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
Darshan Shah
2016년 11월 25일
Can you explain this in detail. I am struggling to use this explanation. I am new to GUIDE and programming.
추가 답변 (2개)
Jan
2013년 3월 4일
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
QiQin Zhan
2013년 3월 4일
댓글 수: 2
Jan
2013년 3월 4일
편집: Jan
2013년 3월 4일
@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.
참고 항목
카테고리
Help Center 및 File Exchange에서 Environment and Settings에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!