如何用matlab编程求解拟合方程的参数
来源:学生作业帮 编辑:大师作文网作业帮 分类:综合作业 时间:2024/11/10 23:06:13
如何用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说函数太复杂做不成,所以只能自己编程,求教!我邮箱号1992huayu@gail.com谢了
这是目标函数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说函数太复杂做不成,所以只能自己编程,求教!我邮箱号1992huayu@gail.com谢了
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左右,看了拟合图觉得还行,哈哈,谢谢你的回答
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左右,看了拟合图觉得还行,哈哈,谢谢你的回答