作业帮 > 综合 > 作业

matlab中做指数拟合,如何输入一个x值,得到拟合后的y值?

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/15 18:51:53
matlab中做指数拟合,如何输入一个x值,得到拟合后的y值?
x=
0.00
0.28
0.57
0.85
1.14
1.42
1.71
1.99
2.28
2.56
2.84
3.13
3.41
3.70
3.98
4.27
4.55
4.83
5.12
5.40
y=
0.00
0.08
0.16
0.21
0.25
0.27
0.30
0.32
0.35
0.37
0.40
0.42
0.44
0.45
0.47
0.48
0.49
0.51
0.52
0.53
不用cftool,需要自编程序.用y=a*e^(b*t)+c*e^(d*t)拟合,得到拟合曲线后,我在输入一个x(或y)值,能得到拟合后的相应y(或x)值.
你这个曲线拟合本来就不是简单的事情.对于这种指数函数的线性组合,一般很难找到合适的变换使其变成多项式.如果你能找到这样的变换,那么问题就简单许多.如果不能,那么就需要Bayesian inference和Metropolis-Hastings来实现较为严格的拟合.这种方法较为复杂而且费时,但是如果得到的posterior distributions都是收敛的话,那么这个拟合结果是非常可信的,甚至可以发表.
如果你只是想根据已知的数据来推测一些中间值,并且你假设的这个函数没有任何理论依据的话,还是建议用插值比较方便.另外,目测数据的y值波动并不大,插值应该是比较准确的.
再问: 谢谢你详细的回答! 不过我还是希望能得到函数公式,因为后面我要用它和另一函数求交点。
再答: 哦,好吧。对于这种较为复杂的函数,我还真不知道有什么比较简单而且可靠的拟合方法。其实插值也是一种近似函数,也能被用来求交点。就描述数据而言,两者唯一的不同点是,前者是一个无限可微函数而后者是一个分段函数。如果实际问题要求必须用一个无限可微的函数去逼近数据,那么函数的选择就变得非常关键。这个函数可以是经验函数(即不一定要有理论基础),但关键是你要找到一个标准去界定拟合度(比如最小二乘,收敛的posterior distributions等等)。 另外,关于一个函数的理论支持,根据你假设的函数,我觉得这些数据也许满足这样一个微分方程,y''-(b+d)y'+bd=0,initial condition是y(0)=0,(注意这里缺少一个条件)。你可以根据实际问题来判断这个理论合不合理。如果实际问题可以用这个线性微分方程来模拟和解释,那么一定存在一组参数使得你选的这个函数可以很好的拟合数据(也就证明了参数的存在性)。 当然我只是随便猜一下,希望能提供一点有用的东西。
再问: 在matlab中使用拟合工具箱(命令窗口中输入cftool回车),可以拟合出我要的曲线,并给出了a、b、c、d的数值。但是需要手动操作。拟合情况很好。 只是我希望能用命令自动求出,中间不需手动修改~~ 我会看看插值法是否满足我的需求。谢谢你的详细回答~O(∩_∩)O~
再答: 不客气,可能我把问题想复杂了,以为你这个情况matlab给不出好的拟合。弄出来就好。