matlab函数拟合
f=@(c,t)c(1)+c(2).*log10(t);%参数中,c(1)代表a,c(2)代表bbeta0=[0.5;0.2];beta=lsqcurvefit(f,be...
f=@(c,t) c(1)+c(2).*log10(t); % 参数中,c(1)代表a,c(2)代表b
beta0=[0.5;0.2];
beta=lsqcurvefit(f,beta0,t,y);
coefit=nlinfit(t,y,f,beta);
yfit=f(coefit,t);
数据:t=0.0
0.3333333333333144
0.6666666666666856
1.0
1.3333333333333144
1.6666666666666856
2.0
2.3333333333333144
2.6666666666666856
3.0
y=0.7000000000000455
5.5
5.5
5.400000000000034
5.300000000000011
5.2000000000000455
5.100000000000023
4.900000000000034
4.7000000000000455
4.600000000000023
错误使用 snls (line 47)
Objective function is returning undefined values at initial point. lsqcurvefit cannot continue 展开
beta0=[0.5;0.2];
beta=lsqcurvefit(f,beta0,t,y);
coefit=nlinfit(t,y,f,beta);
yfit=f(coefit,t);
数据:t=0.0
0.3333333333333144
0.6666666666666856
1.0
1.3333333333333144
1.6666666666666856
2.0
2.3333333333333144
2.6666666666666856
3.0
y=0.7000000000000455
5.5
5.5
5.400000000000034
5.300000000000011
5.2000000000000455
5.100000000000023
4.900000000000034
4.7000000000000455
4.600000000000023
错误使用 snls (line 47)
Objective function is returning undefined values at initial point. lsqcurvefit cannot continue 展开
展开全部
问题出在,t=0时,Log10(t)是无穷大,所以运行程序出现警告。处理方法,人为地加一个最小量,即
t=[eps 0.3333333333333144 0.6666666666666856 1.0 ......]
程序修改后代码
t=[eps 0.3333333333333144 0.6666666666666856 1.0 ......]';
y=[0.7000000000000455 5.5 5.5 5.400000000000034 5.300000000000011 ......]';
[coefit,yfit]=f_mbpclft(t,y) %f_mbpclft()自定义函数就是你给的内容
运行结果
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询