matlab中拟合函数nlinfit的使用
编程如下:x=[0.0760.1970.3560.4980.6220.7470.8290.936]';r=[1.62251.49591.34701.23131.14471...
编程如下:
x=[0.076 0.197 0.356 0.498 0.622 0.747 0.829 0.936]';
r=[1.6225 1.4959 1.3470 1.2313 1.1447 1.0733 1.0369 1.0060]';
z=1-x;
y=log(r);
beta0=[1.000,1.000]';
beta=nlinfit(x,y,@myfun,beta0);
事先写好了函数文件:
function y=myfun(beta,x,z)
y=-log(x+beta(1)*z)+z*(beta(1)./(x+beta(1)*z)-beta(2)./(z+beta(2)*x));
可是运行后报错:
Error using nlinfit (line 121)
Error evaluating model function 'myfun'.
Error in Untitled4 (line 6)
beta=nlinfit(x,y,@myfun,beta0);
Caused by:
Error using myfun (line 2)
Not enough input arguments.
求大神指导!!! 展开
x=[0.076 0.197 0.356 0.498 0.622 0.747 0.829 0.936]';
r=[1.6225 1.4959 1.3470 1.2313 1.1447 1.0733 1.0369 1.0060]';
z=1-x;
y=log(r);
beta0=[1.000,1.000]';
beta=nlinfit(x,y,@myfun,beta0);
事先写好了函数文件:
function y=myfun(beta,x,z)
y=-log(x+beta(1)*z)+z*(beta(1)./(x+beta(1)*z)-beta(2)./(z+beta(2)*x));
可是运行后报错:
Error using nlinfit (line 121)
Error evaluating model function 'myfun'.
Error in Untitled4 (line 6)
beta=nlinfit(x,y,@myfun,beta0);
Caused by:
Error using myfun (line 2)
Not enough input arguments.
求大神指导!!! 展开
1个回答
展开全部
程序改成如下:
主程序:
x=[0.076 0.197 0.356 0.498 0.622 0.747 0.829 0.936];
r=[1.6225 1.4959 1.3470 1.2313 1.1447 1.0733 1.0369 1.0060];
y=log(r);
beta0=[1.000,1.000];
beta=nlinfit(x,y,@myfun,beta0);
x1=min(x):0.001:max(x);
E=-log(x1+beta(1).*(1-x1))+(1-x1).*(beta(1)./(x1+beta(1).*(1-x1))-beta(2)./((1-x1)+beta(2).*x1));
plot(x,y,'o',x1,E)
legend('原始数据点' , '拟合后的曲线')
调用程序
function y=myfun(beta,x)
%z=(1-x)
y=-log(x+beta(1).*(1-x))+(1-x).*(beta(1)./(x+beta(1).*(1-x))-beta(2)./((1-x)+beta(2).*x));
end
结果:
追问
非常感谢,弱弱的问一句nlinfit函数中的自变量和因变量不应该都用列向量的吗?为什么你用的是行向量呢?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询