主题: [MATLAB基础] 曲线拟合求助
查看单个帖子
旧 2010-05-17, 02:27   #1
lincsu
初级会员
 
注册日期: 2009-11-15
帖子: 5
声望力: 0
lincsu 正向着好的方向发展
默认 曲线拟合求助

coeff是所求的未知系数,一共三个参数
xdata=【0:0.001:3】。。。。1x3001
ydata=不规则的数据,请见附件,长度1x3001
是一个公式求出来的数值
附件是matlab中.mat文件,下载后可以改成.mat后缀

求解的曲线是:
F=coeff(3)^2./((coeff(2)-xdata.^2).^2+(coeff(1)*xdata).^2);

非常感谢,我使用了:
coeff0 = [5; 8; 0.00001]; % Starting guess
[coeff,resnorm] = lsqcurvefit(@myfun,coeff0,xdata,ydata)

function F = myfun(coeff,xdata)
F=coeff(3)^2./((coeff(2)-xdata.^2).^2+(coeff(1)*xdata).^2);

但是一直出错:
??? Error using ==> optim\private\snls at 304
lsqcurvefit cannot continue: user function is returning Inf or NaN values.

Error in ==> optim\private\lsqncommon at 221
[x,FVAL,LAMBDA,JACOB,EXITFLAG,OUTPUT,msg]=...

Error in ==> lsqcurvefit at 182
[x,Resnorm,FVAL,EXITFLAG,OUTPUT,LAMBDA,JACOB] = ...

Error in ==> white_noise_to_color at 25
[coeff,resnorm] = lsqcurvefit(@myfun,coeff0,omega,S_FF)
上传的附件
文件类型: rar s_ff.rar (21.2 KB, 7 次查看)

此帖于 2010-05-17 03:07 被 lincsu 编辑。
lincsu 当前离线   回复时引用此帖