Matlab拟合出错

clcx1=[0.050.0750.10.20.40.60.20.20.20.20.20.2]';x2=[54500054500054500054500054500054... clc
x1=[0.050.0750.10.20.40.60.20.20.20.20.20.2]';
x2=[54500054500054500054500054500054500054545.45181818.18363636.36909090.911454545.452181818.18]';
x=[x1,x2];
y=[769.9144325.0511174.300139.85486.9964032.46029142.524240.856139.854839.687839.64139.6194]';
fun=inline('1.445*1.225*x(:,1).^a(1)*x(:,2).^a(2)*(x(:,1)-1).^2','a','x');
a=lsqcurvefit(fun,[0 0],x,y)
提示错误信息为:
??? Error using ==> optim\private\lsqncommon
User supplied expression or inline function ==> 1.445*1.225*x(:,1).^a(1)*x(:,2).^a(2)*(x(:,1)-1).^2
failed with the following error:

Error using ==> inlineeval
Error in inline expression ==> 1.445*1.225*x(:,1).^a(1)*x(:,2).^a(2)*(x(:,1)-1).^2
??? Error using ==> mtimes
Inner matrix dimensions must agree.

Error in ==> lsqcurvefit at 149
[x,Resnorm,FVAL,EXITFLAG,OUTPUT,LAMBDA,JACOB] = ...

Error in ==> curvefitting at 7
a=lsqcurvefit(fun,[1 1],x,y)
>>
新手刚刚接触,查好久都没查到哪里的问题,跪求大虾出手看看哪里有问题,感激不尽!!!
展开
 我来答
lhmhz
高粉答主

推荐于2016-08-31 · 专注matlab等在各领域中的应用。
lhmhz
采纳数:7264 获赞数:17014

向TA提问 私信TA
展开全部

出错原因,主要是在自定义函数fun()上(没有很好理解点乘的用法)。正确的fun()应为

fun=inline('1.445*1.225*x(:,1).^a(1).*x(:,2).^a(2).*(x(:,1)-1).^2','a','x');

根据你的数据,拟合结果为

风儿Lamp沙儿
2015-10-23 · TA获得超过7831个赞
知道大有可为答主
回答量:1787
采纳率:63%
帮助的人:517万
展开全部
把fun改成 fun=@(a,x)1.445*1.225*x(:,1).^a(1)*x(:,2).^a(2)*(x(:,1)-1).^2;
本来想给你运行出来的,你的x,y值没分开,连在一起了
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式