Fsolve 变量,

Fsolve with variables,

我有这个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 是一个最小二乘问题。

文档说

X = fsolve(FUN,X0) starts at the matrix X0 and tries to solve the equations in FUN. FUN accepts input X and returns a vector (matrix) of equation values F evaluated at 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

然后使用此函数和一些初始向量 x0 = [a; b; c] 调用 fsolve