求助matlab高手,用nlinfit曲线拟合时报错!??? Error using ==> mrdivide Matrix dimensions must agree.
函数原型为y=(b1-b2)/(1+e^((x-x0)/d))+b2
我的程序:b1,b2,x0,d 为四个待拟合参数
y=[-1.5000 -1.9000 -2.0000 -2.1000 -2.4000 -2.6000 -2.4000 -2.2000 -2.1000 -1.8000 -2.9000 -3.1000 -3.8000 -4.0000 -4.4000 -5.8000 -6.1000 -6.4000 -4.0000 -5.2000 -6.1000 -7.5000 -6.3000 -6.9000 -7.3000 -7.7000 -5.8000];
x=-32.1:30:747.9;
>> myfunc=inline('beta(2)+(beta(1)-beta(2))/(1+exp((x-beta(3))/beta(4)))','beta','x');
beta=nlinfit(x,y,myfunc,[5 5 5 5]);
答案:x=x';y=y';
myfunc=inline('beta(2)+(beta(1)-beta(2))./(1+exp((x-beta(3))/beta(4)))','beta','x');
beta=nlinfit(x,y,myfunc,[5 1 5 5]);
beta
beta =
-1.8795 -6.8170 377.0127 81.2053
其他:Error using == 我试了一下,好像是不能用inline函数来描述你要拟合的函数,你必须编一个函数M文件,因为inline函数建立的函数,如果myfunc([1 2 3 4],x),其中的x必须是一个标量,才能计算得到值。如果x是向量,myfunc([1 2 3 4],x)不能计算出每一个x(i)对应的值,而在nlinfit中必须要求函数能一次计算出一个向量x的每一个元素对应的函数值。所以不行,我的处理如下,y=(b1-b2)/(1+e^((x-x0)/d))+b2的函数M文件为:
function y=myfunc(beta,x)
y=beta(2)+(beta(1)-beta(2))./(1+exp((x-beta(3))./beta(4)));
end
然后就是beta=nlinfit(x,y,@myfunc,[5 5 5 5]);
可以计算出beta=[-1.8795 -6.8170 377.0128 81.2054]
hehe!
上一个:matlab要算一个除法 y=12.5*x-12.5*125^4/x^3 代码该怎么写???
下一个:matlab!!!!