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
。
我有这个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 matrixX0
and tries to solve the equations inFUN
.FUN
accepts inputX
and returns a vector (matrix) of equation valuesF
evaluated atX
.
因此您需要重写您的函数,使其接受单个参数向量作为其输入。例如,在您的情况下,
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
。