首先将y和x1,x2,x3都变为列向量,就是80x1的矩阵
如果原来是行向量1x80的矩阵用戚脊y=y.'或x1=x1.‘转置一下就可以了
将x1 x2 x3合拼为80x3的矩阵
x=[x1 x2 x3];
然后创建函数句柄
fun=@(a,x) a(1)*x(:,1)+a(2)*x(:,2)+(a(3)*x(:,1)+a(4)*x(:,1)).*(1+exp(a(5)+a(6)*x(:,3)));
其中a1=a(1),a2=a(2),b1=a(3),b2=a(4),c=a(5),d=a(6);
a0=[* * * * * *]; %这里要为6个参数赋予一个初值
aa=nlinfit(x,y,fun,a0); %调用nlinfit进行拟合,得悔埋到的aa是6个值的向量,对应原来的6个参数
这里关键是初值的选择,如果初值高前渗和结果很接近,那么拟合很快收敛
如果初值选择不恰当,可能计算收敛慢,甚至不收敛,得不到结过