How to call the Callback function (in a subfunction of another Callback function)?

조회 수: 40 (최근 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

채택된 답변

Sean de Wolski
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
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
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.

QiQin Zhan
QiQin Zhan 2013년 3월 4일
I think it may be the first error you've said.
If I have a experment.m file,the code is as follows
function test1
x = 1
function test2
y = 0
Then how can I call the function 'test1' and 'test2' in another .m file?
  댓글 수: 2
Jan
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.
QiQin Zhan
QiQin Zhan 2013년 3월 7일
I think I've got exact answer from Sean.It's an excellent idea to use function handle to call the second function from other M-files.Anyhow I would thank you very much.

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Interactive Control and Callbacks에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!

Translated by