如何用matlab编程求解拟合方程的参数

这是目标函数f(t)=d*(b-exp(-t/c))*exp(-2*a*log(b*exp(t/c)-1)),已知f(t),t,各一百组数据,需求出拟合参数a,b,c,d。我试了一下最小二乘法,但是没弄出来,用matlab的cftool说函数太复杂做不成,所以只能自己编程,求教!我邮箱号[email protected]谢了

1、你可以用nlinfit()函数拟合,精度比较高。
2、用matlab的拟合工具箱cftool也是非常方便,而且不用编程。你只要将y=d*(b-exp(-x/c))*exp(-2*a*log(b*exp(x/c)-1))输入自定义函数(General Equations)命令框内,就可以得到其拟合系数。
你的邮箱有问题,不存在,邮件无法送达。追问

你知道为什么lsqcurvefit函数在拟合时其拟合结果与初值有关?谢了先

追答

用lsqcurvefit()函数和nlinfit()函数进行拟合结果与初值选定有很大的关系。所以你想得到好的拟合函数,就得耐心地去设定和运行,才能获得好的结果。

追问

嗯,刚才在网上见别人说lsqcurvefit函数所用的算法是局部收敛的,真无语,我试了好久,用rand()函数寻找初值,试了一下午,结果还行方差在3×10^-6左右,看了拟合图觉得还行,哈哈,谢谢你的回答

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-11-11
1. 随便给一个b,c的值,拟合a和d
2, 根据拟合出的a和d和b拟合c
3. 根据a,c,d拟合b
4. 迭代循环,直到收敛
5.如果不收敛,就试试把上边的过程反过来,先拟合b,c之类的
第2个回答  2013-11-12
如果只要求出拟合参数,用lingo简单得多
相似回答