24小时热门版块排行榜    

查看: 3651  |  回复: 3

啊蓝若

新虫 (小有名气)

[求助] lsqcurvefit最小二乘提示错误,望高手指点 已有1人参与

x =[770,850,860,960,990,1050,100,1060,1090,1090];
y =[0,0.3,0.7,1.0,1.3,1.7,2.0,2.3,0.7,3.0];
f=@(a, x) a(1)./a(2).*(a(3)./(1700+850.*a(1).*(1-a(4))) .*log((1700.*a(4)+a(1).*(1-a(4)).*(x-770))./(a(4).*a(3).*850-a(3).*(x-770)))+1./(a(1).*(1-a(4))) .*log(1700+(a(1).*(1-a(4)).*(x-770))./a(4))-a(3)./(1700+850.*a(1).*(1-a(4)) ).* log(1700/(850.*a(3) ))-1./(a(1)*(1-a(4))) .*log(1700))
[a,res]=lsqcurvefit(f,[1,1,1,1], x,y);
y1=f(a, x);
plot(x,y, x,y1,’x’)

f =

    @(a,x)a(1)./a(2).*(a(3)./(1700+850.*a(1).*(1-a(4))).*log((1700.*a(4)+a(1).*(1-a(4)).*(x-770))./(a(4).*a(3).*850-a(3).*(x-770)))+1./(a(1).*(1-a(4))).*log(1700+(a(1).*(1-a(4)).*(x-770))./a(4))-a(3)./(1700+850.*a(1).*(1-a(4))).*log(1700/(850.*a(3)))-1./(a(1)*(1-a(4))).*log(1700))

错误使用 snls (line 47)
Objective function is returning undefined values at initial point. lsqcurvefit cannot continue.

出错 lsqncommon (line 149)
    [xC,FVAL,LAMBDA,JACOB,EXITFLAG,OUTPUT,msgData]=...

出错 lsqcurvefit (line 252)
[xCurrent,Resnorm,FVAL,EXITFLAG,OUTPUT,LAMBDA,JACOB] = ...
本人菜鸟初学,求高手指点怎么修改啊?多谢啊
回复此楼

» 猜你喜欢

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

文刀星

木虫 (小有名气)

还是好好检查你的拟合方程有没有错吧!这个函数时根据你给的初始值和Xdata计算初始Y值,你给的初始值和Xdata代入你写的方程会发现,得到的是NAN,可能是你的方程出现除以0的情况,所以还是好好检查你的拟合方程,看看能不能变个型之类的避免出现被0除的情况!好像你的拟合方程中有(1-a)做除数的情况,当然连初始化都不行,更不用说拟合了!
2楼2015-12-25 20:10:49
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

文刀星

木虫 (小有名气)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
感谢参与,应助指数 +1
啊蓝若: 金币+15, ★★★很有帮助 2015-12-29 18:01:52
当然,你可以采用不同不使拟合方程出现NAN情况的初值,比如3*[1,1,1,1]。
3楼2015-12-25 20:28:21
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

啊蓝若

新虫 (小有名气)

引用回帖:
3楼: Originally posted by 文刀星 at 2015-12-25 20:28:21
当然,你可以采用不同不使拟合方程出现NAN情况的初值,比如3*。

谢谢,初始值确实设置有问题
4楼2015-12-29 18:01:28
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 啊蓝若 的主题更新
信息提示
请填处理意见