回 帖 发 新 帖 刷新版面

主题:急!matlab非线性回归问题!

各位大虾:
在下做非线性回归,如下:
function yhat=model(beta,x)
b=beta(1);
a=beta(2);
d=beta(3);
r=beta(4);
x=[lab' cap'];
lab=x(:,1);
cap=x(:,2);
yhat=b+a*log(xw);
xw=d*lab.^r+(1-d)*cap.^r;
lab=[0.228 0.821 0.495 0.678 0.727 0.458 0.002 0.231 0.631 0.811 0.050 0.483 0.116 0.456 0.358 0.258 0.767 0.487 0.748 0.695 0.981 0.429 0.664 0.059 0.758 0.823 0.682 0.440 0.342 0.162];
cap=[0.802 0.771 0.758 0.452 0.845 0.084 0.295 0.546 0.017 0.223 0.161 0.836 0.930 0.185 0.485 0.249 0.511 0.425 0.817 0.958 0.021 0.277 0.129 0.906 0.145 0.006 0.521 0.495 0.092 0.934];
yhat=[-1.359 0.193 -0.165 -0.473 -0.563 -2.218 -5.586 -1.315 -3.879 0.377 -2.539 -0.324 -1.530 -1.151 -0.951 -1.695 -0.649 -0.270 0.031 -0.125 -3.633 -0.733 -1.678 -2.301 -2.270 -5.150 -0.253 -0.614 -2.089 -1.275];
beta0=[1 -1.5 -1 0];
betahat=nlinfit(x,y','model',beta0);
运行后,总出现下面的问题:
Input argument "beta" is undefined.
怎么回事啊?
哪位大虾遇到过,帮助解决一下啊!万分感谢!

回复列表 (共2个回复)

沙发

[a,b,d,r]=[-.69354213,  .19006860,  .45628221, -1.5510516]
若用:yhat=b(1)+b(2)*x1+b(3)*x2+b(4)*x1.^2+b(5)*x2.^2+b(6)*x1.*x2
则:b=[-5.5306456, 8.962369, 8.3106803, -7.8096187, -6.0820286, .734768704]
相对简单方便且在数据域内连续(形成一个曲面)。

板凳


非常感谢!
又向你的信箱发了一些东东!不好意思[em8]

我来回复

您尚未登录,请登录后再回复。点此登录或注册