2015-11-20 76 views
0

我有這個功能的MATLAB,Fsolve與變量,

function [f]=ErrorFun(a,b,c) 
    global I  
    global phi 

    f = sum((a+b.*cos(phi)+c.*sin(phi)-I).^2); 
end 

length(a)=length(b)=length(phi)=length(c)=length(I)N。我想用fsolve,但我不知道該怎麼做。 ErrorFun是最小二乘問題。

回答

0

文檔說在矩陣X0

X = fsolve(FUN,X0)啓動並試圖解決 方程FUNFUN接受輸入X並返回在X處評估的方程值F的向量(矩陣) 。

所以你需要重寫你的函數,使它接受一個參數向量作爲輸入。例如,你的情況,

function f = ErrorFun(x) 
    global I phi 
    n = length(phi) ; 
    a = x(1:n) ; 
    b = x(n+1:2*n) ; 
    c = x(2*n+1:3*n) ; 

    f = sum((a+b.*cos(phi)+c.*sin(phi)-I).^2) ; 
end 

然後調用fsolve這個功能和一些初始向量x0 = [a; b; c]