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.
求大神指导!!!
展开
 我来答
wxhhq0226
推荐于2017-12-15 · TA获得超过1697个赞
知道小有建树答主
回答量:496
采纳率:66%
帮助的人:490万
展开全部

程序改成如下:

主程序:

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函数中的自变量和因变量不应该都用列向量的吗?为什么你用的是行向量呢?
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式