我们平时最常用的非线性拟合函数还是多项式拟合,有一天学弟突然问了我nlinfit 这个函数,然后直接查询matlab官方文档,原来非线性函数还可以用这个函数,下面来看看matlab官方文档的说明:
英文?没关系,下面看一下中文用法:
beta = nlinfit(X, Y, modelfun, beta0)
beta:估计出的非线性函数的系数
modelfun:指定的要拟合的非线性函数
beta0:回归系数的初始值
[beta, R, J, CovB, MSE, ErrorModelInfo] = nlinfit(___)
R:残差
J:modelfun雅可比矩阵
CovB:估计方差-协方差矩阵
MSE:均方差
ErrorModelInfo:拟合函数与实际值Y的误差信息
中间两个用的不多,如果需要,请大家自行查阅帮助文档。
下面通过一个实例具体说明一下:
需要拟合的函数:
初值为:[-1 1 -1 1 1]
代码如下:
x=1:16; y=[4 6.4 8 8.8 9.22 9.5 9.7 9.86 10 10.2 10.32 10.42 10.5 10.55 10.58 10.6]; y1=@(b,t) b(1)*exp(-t/b(2))+b(3)*exp(-t/b(4))+b(5); b0=[-1 1 -1 1 1];%初始参数 [beta,R,J,CovB, MSE,ErrorModelInfo]=nlinfit(x,y,y1,b0)%所求出的回归系数 xp=1:0.1:16; yp=y1(beta,xp); plot(x,y,'.k',xp,yp,'r')
结果:
由图可以看出,拟合的效果还是不错的。
该函数的介绍就到这里,更多内容请查询官方帮助文档。