matlab lsqcurvefit函数&nbsp…

来源:互联网 发布:beats耳机知乎 编辑:程序博客网 时间:2024/05/16 04:41
x= lsqcurvefit(fun,x0,xdata,ydata)
x = lsqcurvefit(fun,x0,xdata,ydata,lb,ub)
x = lsqcurvefit(fun,x0,xdata,ydata,lb,ub,options)
x = lsqcurvefit(problem)
[x,resnorm] = lsqcurvefit(...)
[x,resnorm,residual] = lsqcurvefit(...)
[x,resnorm,residual,exitflag] = lsqcurvefit(...)
[x,resnorm,residual,exitflag,output] = lsqcurvefit(...)
[x,resnorm,residual,exitflag,output,lambda] =lsqcurvefit(...)
[x,resnorm,residual,exitflag,output,lambda,jacobian] =lsqcurvefit(...)
 
 
x0为初始解向量;xdata,ydata为满足关系ydata=F(x, xdata)的数据;
lb、ub为解向量的下界和上界 ,若没有指定界,则lb=[ ],ub=[ ];
options为指定的优化参数;
fun为拟合函数,其定义方式为:x = lsqcurvefit(@myfun,x0,xdata,ydata),
其中myfun已定义为     function F =myfun(x,xdata)
F = …     % 计算x处拟合函数值fun的用法与前面相同;
resnorm=sum ((fun(x,xdata)-ydata).^2),即在x处残差的平方和;
residual=fun(x,xdata)-ydata,即在x处的残差;
exitflag为终止迭代的条件;
output为输出的优化信息;
lambda为解x处的Lagrange乘子;
jacobian为解x处拟合函数fun的jacobian矩阵。
 
例子:%美国人口logistic方程回归
y=[3929 5308 7240 9638 12866 17069 23192 31443 38558 5015662948 75995 91972 105711 ...
122775 131669 150697 179323 203185 226500];
x=1790:10:1980;
func  = @(beta,x)beta(1)./(1+(beta(1)/y(1)-1)*exp(-beta(2)*(x-1790)));
beta0 = [286660   0.0285 ];
[b r]= lsqcurvefit(func,beta0,x,y);
plot(x,y,'r*')
hold on 
x2=1790:1980;
plot(x,func(b,x));
R2=1-r/sum(y.^2);
0 0
原创粉丝点击