如何从MATLAB中的另一个函数文件执行回调函数?
我有两个功能:一个用于创建带有按钮的UI,另一个用于执行与按下按钮相同的功能 当我使用如何从MATLAB中的另一个函数文件执行回调函数?,matlab,callback,Matlab,Callback,我有两个功能:一个用于创建带有按钮的UI,另一个用于执行与按下按钮相同的功能 当我使用get(gcf,'children')深入查看该图时,我发现按钮具有如下回调属性: ans = [function_handle] [ 1] [ 1] [1x6 double] 现在,据我所知,对于第一个数组元素,我应该能够执行与从UI中按下按钮时执行的相同的功能,但是我该怎么做呢?我尝试了所有的方法,但似乎没有任何效果。您
get(gcf,'children')
深入查看该图时,我发现按钮具有如下回调属性:
ans =
[function_handle]
[ 1]
[ 1]
[1x6 double]
现在,据我所知,对于第一个数组元素,我应该能够执行与从UI中按下按钮时执行的相同的功能,但是我该怎么做呢?我尝试了所有的方法,但似乎没有任何效果。您可以使用()操作符调用它,也可以将它传递给feval。首先需要从单元格数组中提取它
x; % holds your ans from original question
fcn = x{1}; % Extract from cell array
fcn(); % call with () syntax
feval(fcn); % call with feval() syntax
如果这不起作用,请发布准确的代码和错误消息,以便我们可以看到哪里出了问题。从按钮回调的结果来看,回调似乎是通过以下方式创建的(仅举个例子): 其中回调函数
按钮\u callback
定义如下:
function button_callback(hObject,eventdata,a,b,c)
...
end
请注意,回调函数有两种类型:hObject
(调用回调的对象的句柄)和eventdata
(事件数据的结构)
如果要使用应传递给函数句柄的3个附加参数(1
、1
和1×6数组)调用函数句柄,还需要传递hObject
和eventdata
输入的参数。下面是调用函数的方式(使用变量ans
):
首先从单元格数组(
ans{1}
)获取函数句柄,然后。对于hObject
可以将句柄传递给uicontrol对象(如果不需要则传递空值),对于eventdata
可以只传递空值。然后将附加值作为(ans{2:end}
)从单元格数组中获取,并将每个值作为一个单独的附加参数传递给函数。回答此问题后,没有多少问题了。:)让我着迷的是细胞阵列。。以前从未使用过它们,所以我没有意识到我应该以不同的方式阅读它们({}而不是[])。
function button_callback(hObject,eventdata,a,b,c)
...
end
ans{1}(hButton,[],ans{2:end});