如何从单元格数组中调用函数句柄?

时间:2014-04-17 15:13:17

标签: arrays matlab anonymous-function

我尝试做的是保留一个函数句柄的单元格数组,然后在循环中调用其中一个。它不起作用,在我看来,我得到的只是一个1x1的单元格数组,而不是其中的函数hanlde。

我对使用单元格数组并不太宽容,所以如果另一个集合对我来说很好用。

这是我的代码:

func_array = {@(x) x, @(x) 2*x }
a = func_array(1) %%% a = @(x) x
a(2) %%% (error-red) Index exceeds matrix dimensions.
a(0.2) %%% (error red) Subscript indices must either be real positive integers or
logicals.

谢谢 阿米尔

1 个答案:

答案 0 :(得分:4)

问题出在这一行:

a = func_array(1)

您需要访问单元格数组的内容,而不是元素。

a = func_array{1}

一切正常。命令窗口中的视觉输出看起来是一样的,这确实有点误导,但是看看工作区中的差异。

如评论中的 chappjc 所述,中间变量不是必需的。您可以按如下方式调用您的函数:

func_array{2}(4)    %// 2*4

ans =  8

错误说明:

a(2) %%% (error-red) Index exceeds matrix dimensions.

a仍然是一个单元格数组,但只有一个元素,因此a(2)超出范围。

a(0.2) %%% (error red) Subscript indices must either be real positive ...

...并且数组不能用小数编制索引。但无论如何,这不是你的意图;)