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.
求帮忙分析到底哪里错了。。 展开
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.
求帮忙分析到底哪里错了。。 展开
1个回答
展开全部
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')
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')
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询