2014-03-06 163 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};