2014-03-06 139 views
2

我有这样的脚本:获取指数超过矩阵尺寸误差在MATLAB

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?

回答

2

这是因为它试图指数f,而不是运行存储在f功能。为什么? f是一个包含函数句柄而不是函数句柄的单元格。

为了f功能句柄:

f = F{i};