关于MATLAB参数辨识

关于MATLAB参数辨识,第1张

这样改:

x=0.1:0.1:1+eps

y=[39.933,41.327,42.412,43.064,43.769,45.086,46.163,47.172,48.505,49.61]

f=inline('a(1)+a(2).*log(x)+a(3).*log(1-x)+a(4).*1./x+a(5).*x','a','x')

a=lsqcurvefit(f,[0 0 0 0 0],x,y)

运行结果:

a =

33.3834 - 0.0020i -4.8861 - 0.0014i 0.0033 + 0.0003i -0.6413 - 0.0001i 16.9875 + 0.0030i

可见程序数据或参数不当,只有复数结果。

主要错误是匿名函数书写不对,应该这样来写:

f=inline('a(1)*exp(-a(2).*x).*sin(a(3).*x)+a(4).*tanh(a(5)*x)+a(6).*(x./a(7)-x).^a(8)','a','x')

其他小问题,如自然指数函数书写错误,应为exp(),而不是eps()无穷小量。

注意:使用lsqcurvefit()时,其初值是不是唯一的,要根据y与f(x)的差值是否小(接近于零)而定。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8121468.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-13
下一篇 2023-04-13

发表评论

登录后才能评论

评论列表(0条)

保存