如何访问单元格数组中的函数句柄?

时间:2015-09-26 04:43:40

标签: matlab cell-array function-handle

rate_arr_cst_1 = @(t) 2*sin(t)+10; 
rate_arr_cst_2 = @(t) 3*sin(2*t)+8;
rate_arr_cst_h = {rate_arr_cst_1, rate_arr_cst_2};

我以这种方式定义了一个单元格数组,并尝试按以下方式访问:

i=1;
h = rate_arr_cst_h(i);

但我得到的仍然是一个单元格数组,这意味着我不能用h来评估t = 0.1。

非常感谢您的帮助!

2 个答案:

答案 0 :(得分:4)

执行h = rate_arr_cst_h(i);时,您正在访问单元格数组的i^th元素,该元素仍然是一个单元格。如果要访问单元阵列中i^th单元的内容,则需要执行:h = rate_arr_cst_h{i};。注意使用大括号。

答案 1 :(得分:2)

使用for循环:

for ii = 1:numel(rate_arr_cst_h)
    hh(ii) = rate_arr_cst_h{ii}(i);
end

或者您可以使用cellfun

hh = cellfun(@(f) f(i), rate_arr_cst_h);