如何从MATLAB中的另一个函数文件执行回调函数?

如何从MATLAB中的另一个函数文件执行回调函数?,matlab,callback,Matlab,Callback,我有两个功能:一个用于创建带有按钮的UI,另一个用于执行与按下按钮相同的功能 当我使用get(gcf,'children')深入查看该图时,我发现按钮具有如下回调属性: ans = [function_handle] [ 1] [ 1] [1x6 double] 现在,据我所知,对于第一个数组元素,我应该能够执行与从UI中按下按钮时执行的相同的功能,但是我该怎么做呢?我尝试了所有的方法,但似乎没有任何效果。您

我有两个功能:一个用于创建带有按钮的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});