Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
![]() |
#1 |
初级会员
注册日期: 2007-05-22
帖子: 1
声望力: 0 ![]() |
![]()
函数定义如下,需拟合其中的参数a
function y=c8(a,x) syms z; g=z.^(a(1)-1).*(1-z).^(a(2)-1); y(1)=int(g,z,0,x(1))./int(g,z,0,1); y(2)=int(g,z,0,x(2))./int(g,z,0,1); 调用如下: x=[0.27,0.83]; y=[0.25,0.75]; m=double(c8([2;3],x)) n=lsqcurvefit('c8',[2;3],x,y) 结果如下: m = 0.2959 0.9829 ??? Function 'isfinite' is not defined for values of class 'sym'. Error in ==> optim\private\snls at 275 if any(~isfinite(fvec)) Error in ==> optim\private\lsqncommon at 213 [x,FVAL,LAMBDA,JACOB,EXITFLAG,OUTPUT,msg]=... Error in ==> lsqcurvefit at 165 [x,Resnorm,FVAL,EXITFLAG,OUTPUT,LAMBDA,JACOB] = ... Error in ==> m0524 at 4 n=lsqcurvefit('c8',[2;3],x,y) m值已经得出,因此函数的定义应该是没有问题的。应该是函数与lsqcurvefit之间出了问题。同样应用非线性最小二乘拟合函数nlinfit时,也出现了同样的问题。请高手指点下啊~~谢谢!!! ps.偶一碰到这种转到matlab提供的函数内部的错误,就晕拉 ![]() |
![]() |
![]() |