feixuedu1106 发表于 2008-1-24 13:24

Matlab拟合函数问题

t = [ 22, 50, 73, 78, 104, 131, 156, 179, 204, 228, 251, 31, 64, 94, 125, 152, 178, 203, 228, 253]
y = [ .7857143, 1.785714, 2.785714, 3.785714, 4.785714, 5.785714, 6.785714, 7.785714, 8.785714, 9.785714, 10.78571, .9393939, 1.939394, 2.939394, 3.939394, 4.939394, 5.939394, 6.939394, 7.939394, 8.939394]
%上面为数组,下面为拟合代码

myfunc=inline('beta(1)*t^2+beta(2)*t+b(3)*exp(-beta(4)/t)','beta','t');
beta=nlinfit(t,y,myfunc,)
a=beta(1),k1=beta(2),k2=beta(3),m=beta(4)
%test the model
tt=0:1:255
yy=a*tt^2+k1*tt+k2*exp(-m/tt)
plot(t,y,'o',tt,yy,'r')

拟合总是出错,是不是我的拟合模型选择有问题,还是我的代码写的有问题,希望大虾们可以附上代码,另外对于非线性拟合还有什么好的拟合函数可以多建议几个,我的7.0版本

sigma665 发表于 2008-1-24 14:38

回复 楼主 的帖子

??? Error using ==> nlinfit at 114
The inline model function generated the following error:
Error using ==> inlineeval at 15
Error in inline expression ==> beta(1)*t^2+beta(2)*t+b(3)*exp(-beta(4)/t)
??? Error using ==> mpower
Matrix must be square.


出错提示如上.

应该是beta=nlinfit(t,y,myfunc,)
有问题

eight 发表于 2008-1-24 15:38

希望楼主发帖前,先看看会员守则

feixuedu1106 发表于 2008-1-25 12:05

楼上的各位高手,能不能帮我把这个问题解决了,本人不胜感激,最好可以附上代码!

eight 发表于 2008-1-25 12:12

原帖由 feixuedu1106 于 2008-1-25 12:05 发表 http://www.chinavib.com/forum/images/common/back.gif
楼上的各位高手,能不能帮我把这个问题解决了,本人不胜感激,最好可以附上代码!

居然无视论坛的有关规定,此贴关闭处理。再发的话,必定禁言

xjzuo 发表于 2008-1-25 15:30

这个问题用1stOpt求解可能更好。
当然,你也可以用lsqcurvefit试试。
另:你的程序存在明显问题,如:beta(3)写成了b(3),以及向量没有用“点”运算。
我用lsqcurvefit拟合了一下,可以实现:
页: [1]
查看完整版本: Matlab拟合函数问题