LaGeLang_Yue
2007-05-24, 12:47
函数定义如下,需拟合其中的参数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提供的函数内部的错误,就晕拉:confused: ~~~高手们是怎么从中找到问题所在的哪?
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提供的函数内部的错误,就晕拉:confused: ~~~高手们是怎么从中找到问题所在的哪?