解决变量,

时间:2015-11-20 19:17:06

标签: matlab optimization least-squares

我有这个matlab函数,

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是最小二乘问题。

1 个答案:

答案 0 :(得分:0)

文档说

  

X = fsolve(FUN,X0)从矩阵X0开始,尝试解决问题      FUN中的方程式。 FUN接受输入X并返回一个向量(矩阵)      在F评估的等式值X

因此您需要重写您的函数,以便它接受单个参数向量作为其输入。例如,在您的情况下,

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]