|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
这个问题源自于本版块的另一个帖子:"matlab多参数指数拟合如何实现",http://forum.vibunion.com/thread-101750-1-1.html,在此向作者sophialll 表示感谢。
帖子中作者的问题貌似已经解决了,但自己在学习他的问题是又出现了一个新的问题,困惑了两天,所以此问题贴出来,请各位指教。
问题描述:
有两组数据:
- x=[5:30];
- y=[0.07187 0.05888 0.04987 0.04324 0.03815 0.03417 0.03093 0.02824 0.02598 0.02406 0.02241 0.02096 0.0197 0.01857 0.01757 0.01667 0.01585 0.01511 0.01444 0.01383 0.01326 0.01275 0.01226 0.01182 0.0114 0.01101];
复制代码 想要对其进行拟合,采用指数拟合。
1.版主qibbxxt采用cftool根据箱进行了拟合,结果如下:
- General model Exp2:
- f(x) = a*exp(b*x) + c*exp(d*x)
- Coefficients (with 95% confidence bounds):
- a = 0.1916 (0.1792, 0.204)
- b = -0.319 (-0.3373, -0.3006)
- c = 0.04072 (0.03814, 0.04329)
- d = -0.04487 (-0.0476, -0.04214)
- Goodness of fit:
- SSE: 1.669e-006
- R-square: 0.9997
- Adjusted R-square: 0.9997
- RMSE: 0.0002754
复制代码 2.而我采用自己定义fittype('a*exp(b*x)+c*exp(d*x)','coeff',{'a','b','c','d'});函数,得到的结果却是如下:
- >> f=fittype('a*exp(b*x)+c*exp(d*x)','coeff',{'a','b','c','d'});
- >> [c,gof2]=fit(x',y',f)
- Warning: Start point not provided, choosing random start point.
- > In fit>handlewarn at 705
- In fit at 321
- c =
- General model:
- c(x) = a*exp(b*x)+c*exp(d*x)
- Coefficients (with 95% confidence bounds):
- a = 0.00362 (-0.02079, 0.02803)
- b = 0.1983 (-0.107, 0.5036)
- c = -3.244e-010 (-1.577e-008, 1.512e-008)
- d = 0.7468 (-0.7801, 2.274)
- gof2 =
- sse: 1.7698
- rsquare: -282.6509
- dfe: 22
- adjrsquare: -321.3306
- rmse: 0.2836
复制代码 3.Chaching执行如下的命令,得到结果:
- >> f=fittype('exp2');
- >> [c,gof2]=fit(x',y',f)
- c =
- General model Exp2:
- c(x) = a*exp(b*x) + c*exp(d*x)
- Coefficients (with 95% confidence bounds):
- a = 0.1916 (0.1792, 0.204)
- b = -0.319 (-0.3373, -0.3006)
- c = 0.04072 (0.03814, 0.04329)
- d = -0.04487 (-0.0476, -0.04214)
- gof2 =
- sse: 1.6686e-006
- rsquare: 0.9997
- dfe: 22
- adjrsquare: 0.9997
- rmse: 2.7540e-004
复制代码 对比1和3做法,可以知道应该是fittype的问题。三种操作,选择的model都是一样的,为什么我的自己定义的fittype在拟合的时候出现了这么大的问题,感觉问题应该是warning的问题吧,请教高手如何处理warning中的关于初值的设置呢!
|
评分
-
1
查看全部评分
-
|