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

How to access function handles in a cell array?

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。

非常感谢您的帮助!

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

要么使用 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);