matlab中nlinfit问题!!!!!!!!!!!!
mip版 关注:272 答案:3 悬赏:40
解决时间 2021-01-19 04:20
已解决
2021-01-18 13:28
mu=inline('beta(1)/(1+(beta(1)/100000-1)*exp(-beta(2)*(t-1981)))','beta','t')
t=[1981,1982,1983,1984,1985]
y=[1000,1111,1222,1333,1444]
beta=nlinfit(t,y,mu,[0 0])
L=beta(1)
k=beta(2)
目的是要拟合L和k,但是在nlinfit那里就要报错!!!
??? Error using ==> nlinfit
The inline model function generated the following error:
Error using ==> inlineeval
Error in inline expression ==> beta(1)/(1+(beta(1)/100000-1)*exp(-beta(2)*(t-1981)))
??? Error using ==> mrdivide
Matrix dimensions must agree.
看不懂,求高手指点!!!!
最佳答案
2021-01-18 14:29
mu=inline('beta(1)./(1+(beta(1)/100000-1)*exp(-beta(2)*(t-1981)))','beta','t');
t=[1981,1982,1983,1984,1985];
y=[1000,1111,1222,1333,1444];
beta=nlinfit(t,y,mu,[1000 3542]);
L=beta(1)
k=beta(2)
你写得好像是线性的,所以求出来的k有点问题。
你出错的原因是 beta(1)后面应该用点除。。即 ./
全部回答
1楼
2021-01-18 15:28
f=inline('(a(1)-a(4))./(1+(x./a(3)).^a(2))+a(4)','a','x'); % 公式错误,其他没事
x=0.5:0.1:1.5;
y=[0,0,0.006,0.175,1.05,1.7,1.85,1.9,1.95,1.975,2];
a0=[0,2,1,3];
b=nlinfit(x,y,f,a0);
plot(x,y,'o',x,f(b,x),'-');
2楼
2021-01-18 14:50
%[1 1 1]就是给a(1),a(2),a(3) 参数赋予初值
%程序运行不了是因为你定义的内联函数inline有错,注意t为数组运算符得用点
t=[1790:10:2000];
p=[3.9 5.3 7.2 9.6 12.9 17.1 23.2 31.4 38.6 50.2 62.9 76.0 92.0 106.5 123.2 131.7 150.7 179.3 204.0 226.5 251.4 281.4];
ft=inline('a(1).*a(2)./(a(1)+exp(-a(3).*t).*a(2)-exp(-a(3).*t).*a(1))','a','t');
a=nlinfit(t,p,ft,[1 1 1])
%a = 1.0000 94.7727 1.0000
%但是给出警告,拟合结果不好,得参考帮助设置一下optimset
另外,团IDC网上有许多产品团购,便宜有口碑
我要举报
如果感觉以上信息为低俗/不良/侵权的信息,可以点下面链接进行举报,我们会做出相应处理,感谢你的支持!
点此我要举报以上信息!
推荐资讯
大家都在看