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

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

 채택된 답변

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

Can you explain this in detail. I am struggling to use this explanation. I am new to GUIDE and programming.

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

추가 답변 (2개)

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.
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.
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.

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

카테고리

도움말 센터File Exchange에서 Performance and Memory에 대해 자세히 알아보기

태그

질문:

2013년 3월 4일

댓글:

2016년 11월 25일

Community Treasure Hunt

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

Start Hunting!

Translated by