一个例子:
clear all;
x1=[0.4292 0.4269 0.381 0.4015 0.4117 0.3017]';
x2=[0.00014 0.00059 0.0126 0.0061 0.00425 0.0443]';
x=[x1 x2];
y=[0.517 0.509 0.44 0.466 0.479 0.309]';
f=@(p,x)
2.350176*p(1)*(1-1/p(2))*(1-(1-x(:,1).^(1/p(2))).^p(2)).^2.*(x(:,1).^(-1/p(2))-1).^(-p(2)).*x(:,1).^(-1/p(2)-0.5).*x(:,2);
p0=[8 0.5]';
opt=optimset('TolFun',1e-3,'TolX',1e-3);
[p R]=nlinfit(x,y,f,p0,opt);
一开始我以为X只能为一维数据,因为我的程序做出来的Y预测值及系数预测均为复数的形式。后来看了这个例子发现不是X维数的原因,其原因是对数函数ln(x)的x值要大于0,我的数据算出来均为负数,所以才出现了这样的情况。所以我将x改为绝对值的形式,就避免了这种情况。并且关于optimset函数,是一个优化函数,也有了很好的启示作用。以下介绍一下optimset的使用方法:
创建或编辑一个最优化参数选项
句法规则
options = optimset('param1',value1,'param2',value2,...)
%设置所有参数及其值,未设置的为默认值options =
optimset %全部设置为默认 options =
optimset(optimfun) %设置与最优化函数有关的参数为默认
options =
optimset(oldopts,'param1',value1,...) %复制一个已存在的选项,修改特定项
options =
optimset(oldopts,newopts) %用另一个新选项合并目前选项
因素
Parameter
<