nlinfit拟合函数出错 50

这是M文件functionyy=myfun(beta,x)%系数和自变量a=beta(1);b=beta(2);c=beta(3);d=beta(4);x1=x(:,1)... 这是M文件
function yy=myfun(beta,x) %系数和自变量
a=beta(1);
b=beta(2);
c=beta(3);
d=beta(4);
x1=x(:,1);
x2=x(:,2);
x3=x(:,3);
x4=x(:,4);
yy=beta(1)*log(((3.7973e-5)^beta(2))*x1.^beta(3)+((3.2258e-3)^beta(2))*x2.^beta(3)+((5.8823e-2)^beta(2))*x3.^beta(3))*x4+beta(4);

下面是命令
x=[3.89494e-4,3.13235e-4,3.9047e-4,3.18218e-4,3.6934e-4,3.79775e-4,1.0395e-4,3.11269e-4;...
4.73532e-9,3.80804e-9,4.7472e-9,3.86863e-9,4.49024e-9,4.61714e-9,1.2636e-9,3.78414e-9;...
4.73531e-11,3.80804e-11,4.7472e-11,3.86863e-11,4.49024e-11,4.61714e-11,1.2636e-11,3.78414e-11;...
886.5,2069,3753.09,2945,6638.9,5988,2380,4389]';
y=[2453420.923,8766623.692,9729225.846,10472460,11983453.85,12003804.62,13021287.54,14193736.77]';
beta0=[1,1,1,1]';
[beta,r,j]=nlinfit(x,y,@myfun,beta0)

出错提示。
??? Error using ==> nlinfit
The model function 'myfun' generated the following error:
Error using ==> mtimes
Inner matrix dimensions must agree.

求帮忙分析到底哪里错了。。
展开
 我来答
yuanming830
2013-05-15
知道答主
回答量:21
采纳率:0%
帮助的人:10.3万
展开全部
YY频道7450欢迎您 ln->log
Matlab中ln就是log
你的初值我改成000了,111的话,计算出来有一小部分虚数成份。
另外最后一个plot我也改了一下,你的xx只有一个值啊,我也就直接改成x做图了。因为你的yy也是由x计算的。

改成:
clc;clear;
x=[1.1389 1.0622 0.9822 0.934 0.9251 0.9158];
y=[0.03 1 5.03 15.05 19.97 30.3];
myfunc=inline('-beta(1)*log(x beta(2))-beta(3)','beta','x');
beta=nlinfit(x,y,myfunc,[0 0 0]);
k=beta(1),a=beta(2),b=beta(3)
%test the model
xx=min(x):max(x);
yy=-k*log(x a)-b;
plot(x,y,'o',x,yy,'r')
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式