声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 11763|回复: 13

[编程技巧] 求助,如何用matlab实现指数拟合?

[复制链接]
发表于 2006-4-26 17:47 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
有这样一组数据:
x=[0.01 0.05 0.1 0.15 0.2 0.25 0.28 0.3 0.35 0.4 0.45 0.5];
y=[0.167 0.721 1.330 1.676 1.854 1.921 1.932 1.937 1.934 1.935 1.935 1.935]
打算用指数函数进行拟合。
拟合方程为:y=a1+a2*exp(-a3*x)不知程序应该怎样写?请指点一下,万分感谢了。

[ 本帖最后由 xinyuxf 于 2007-7-22 21:37 编辑 ]
回复
分享到:

使用道具 举报

发表于 2006-4-27 10:03 | 显示全部楼层

回复:(leiqz)求助,如何用matlab实现指数拟合?急!...

两边取对数,然后再作拟合
[此贴子已经被作者于2006-4-27 10:03:14编辑过]

发表于 2006-4-27 10:45 | 显示全部楼层
用cftool工具
 楼主| 发表于 2006-4-27 12:45 | 显示全部楼层
我知道思路是两边取对数,但是不知道该如何写程序,能否请详细讲解一下。谢谢了。
发表于 2006-4-27 15:00 | 显示全部楼层

最小二乘拟合

fun=inline('a(1)+a(2)*exp(-a(3)*x)','a','x');<BR>x=[0.01 0.05 0.1 0.15 0.2 0.25 0.28 0.3 0.35 0.4 0.45 0.5];<BR>y=[0.167 0.721 1.330 1.676 1.854 1.921 1.932 1.937 1.934 1.935 1.935 1.935];<BR>a=lsqcurvefit(fun,[0,0,0],x,y)<BR>
 楼主| 发表于 2006-4-29 03:32 | 显示全部楼层
请问初始值(0,0,0)是如何取的?
发表于 2006-4-29 20:44 | 显示全部楼层
用1stOpt,连初值都不需要,拟合能力及效果却是No.1
发表于 2006-4-29 20:56 | 显示全部楼层

回复:(leiqz)求助,如何用matlab实现指数拟合?急!...

这个函数用去对数的办法好像做不了<BR><BR>LSQCURVEFIT的初始值一般需要结合具体的物理意义给出<BR>一直没找到一个比较通用的方法,很容易陷入局部最优
 楼主| 发表于 2006-4-30 01:25 | 显示全部楼层
对啊,我现在处理的一组数据就陷入了局部最优,该怎么解决呢?<BR>7楼的楼主提到的1stOpt这个也是个软件吗?我没听说过,有谁用过的能不能说的详细些。谢谢各位了。
发表于 2006-4-30 16:55 | 显示全部楼层

回复:(leiqz)求助,如何用matlab实现指数拟合?急!...

1stOpt是七维高科有限公司(7D-Soft High Technology Inc.)独立开发,拥有完全自主知识产权的一套数学优化分析综合工具软件包。在非线性回归,曲线拟合,非线性复杂工程模型参数估算求解等领域傲视群雄,首屈一指,居世界领先地位。除去简单易用的界面,其计算核心是基于七维高科有限公司科研人员十数年的革命性研究成果【通用全局优化算法】(Universal Global Optimization - UGO),该算法之最大特点是克服了当今世界上在优化计算领域中使用迭代法必须给出合适初始值的难题,即用户勿需给出参数初始值,而由1stOpt随机给出,通过其独特的全局优化算法,最终找出最优解。以非线性回归为例,目前世界上在该领域最有名的软件工具包诸如OriginPro,Matlab,SAS,<BR>SPSS,DataFit,GraphPad,TableCurve2D,TableCurve3D等,均需用户提供适当<BR>的参数初始值以便计算能够收敛并找到最优解。如果设定的参数初始值不当则计算难以收敛,其结果是无法求得正确结果。而在实际应用当中,对大多数用户来说,给出(猜出)恰当的初始值是件相当困难的事,特别是在参数量较多的情况下,更无异于是场噩梦。而1stOpt凭借其超强的寻优,容错能力,在大多数情况下(大于90%),从任一随机初始值开始,都能求得正确结果。<BR><BR>这是他们自己的宣传
 楼主| 发表于 2006-5-12 03:58 | 显示全部楼层
针对这个例子,用1stOpt 该如何编程呢?
发表于 2006-6-16 15:30 | 显示全部楼层
<P>1stOpt不用编程,也不用初值,代码很容易懂,如下:<BR>*********************<BR>Function y=a1+a2*exp(-a3*x);<BR>Data;<BR>x y<BR>0.01 0.167<BR>0.05 0.721<BR>0.1 1.330<BR>0.15 1.676<BR>0.2 1.854<BR>0.25 1.921<BR>0.28 1.932<BR>0.3 1.937<BR>0.35 1.934<BR>0.4 1.935<BR>0.45 1.935<BR>0.5 1.935<BR>*********************<BR><BR>结果:<BR>均方差(RMSE): 0.0472795944335609<BR>残差平方和(SSE): 0.0268243205976241<BR>相关系数(R): 0.996411149843505<BR>相关系数之平方(R^2): 0.992835179532457<BR><BR>参数 最佳估算<BR>---------- -------------<BR>a1          1.98162944954066<BR>a2          -2.10382646876237<BR>a3          11.9660230816888</P>
发表于 2006-6-16 15:56 | 显示全部楼层
支持一下
发表于 2008-4-9 22:13 | 显示全部楼层
_______-- --------matlanb拟合结果
General model:
       f_tiao(x) = a+b*exp(-c*x)
     Coefficients (with 95% confidence bounds):
       a =       1.982  (1.923, 2.041)
       b =      -2.104  (-2.25, -1.957)
       c =       11.97  (10.07, 13.86)
————————————————不过好像没有1opt功能强大
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-12-4 15:47 , Processed in 0.069704 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表