这是我的问题的一个最小示例:
innerFunc([2, 4, 5]) % works fine
outerFunc(innerFunc, [2, 4, 5]) % doesn't work
function out = innerFunc(my_vec)
my_vec % not recogniced when called from outerFunc
out = -1;
end
function out = outerFunc(func, my_vec)
out = func(my_vec);
end
这是代码的输出:
my_vec =
2 4 5
ans =
-1
Not enough input arguments.
Error in nested_funcs_bug>innerFunc (line 5)
my_vec % not recogniced when called from outerFunc
Error in nested_funcs_bug (line 2)
outerFunc(innerFunc, [2, 4, 5]) % doesn't work
>>
我不知道为什么第2行会出错?
特别是因为“innerFunc”通常可以工作,并且我将其传递给outerFunc函数中的输入。
看来在
outerFunc(innerFunc, [2, 4, 5]) % doesn't work
您打算 传递
innerFunc
作为 outerFunc
的输入。但是,您的代码所做的是 call innerFunc
(这会给出错误,因为该函数的输入丢失)。
要将
innerFunc
(的句柄)作为 outerFunc
的输入传递,您需要在前面添加 @
(更多信息此处):
outerFunc(@innerFunc, [2, 4, 5])