2013-03-05 64 views
0

我在Matlab中有一個名爲objective的函數我通過在腳本中編寫[f, df] = objective(x, {@fun1, @fun2, ..., @funN})來評估函數。功能fun1, fun2, ..., funN的格式爲[f, df] = funN(x)評估存儲在Matlab單元陣列中的函數

裏面objective我想,在我的單元陣列的每個輸入稱爲fun,評估使用MATLAB內置函數feval爲給定功能:

function [f, df] = objective(x, fun) 
f = 0; 
df = 0; 
for i = 1:length(fun) 
    fhandle = fun(i); 
    [fi, dfi] = feval(fhandle, x); 
    f   = f + fi; 
    df  = df + dfi; 
end 
end 

我收到以下錯誤評估我objective

Error using feval 
Argument must contain a string or function_handle. 

我不明白如何解決這個錯誤。

回答

2

一個更優雅的方式 - 在cellarray是最有趣的,而不是數據;-)