我有这个脚本:
function [ G ] = evalF( F,x,n )
G=zeros(n,1);
xcell = num2cell(x);
for i=1:n
f = F(i)
a = f(xcell{:})
end
end
并定义了这两个变量:
F =
@(x1,x2)6+2*x1^1+3*x2^2 @(x1,x2)3+3*x1^1+2*x2^2
x =
1 2
当我像这样运行时:
evalF(F,x,2)
但是我收到了错误:
Index exceeds matrix dimensions.
Error in evalF (line 8)
a = f(x{:})
我看不出有什么问题...... 有人可以帮忙吗?
我把一个数组变成了参数,有关它的更多信息在这里 How to split an array as argument values in matlab?
答案 0 :(得分:2)
这是因为它试图索引f
而不是运行存储在f
中的函数。为什么? f
是一个包含函数句柄而不是函数句柄的单元格。
使f
成为函数句柄:
f = F{i};