| 查看: 282 | 回复: 1 | |||
[交流]
【求助】lsqcurvefit非线性拟合的问题 已有1人参与
|
|
function F=myfun(p,data) F=p(1)*(xda(1).^p(2))*(xda(2).^p(3))*(xda(3).^p(4))+p(5)*(xda(4).^p(6)) y=[41.894 115.712 58.319 57.324 67.9495 130.542 71.109 74.447 93.078 128.794 128.573 124.831 107.041 141.092 174.634 217.774 183.355 177.148]; xda(1)=[0.1 0.1 0.1 0.1 0.1 0.1 0.2 0.2 0.2 0.2 0.2 0.2 0.3 0.3 0.3 0.3 0.3 0.3]; xda(2)=[0.1 0.1 0.15 0.15 0.2 0.2 0.1 0.1 0.15 0.15 0.2 0.2 0.1 0.1 0.15 0.15 0.2 0.2 ]; xda(3)=[200 250 200 250 200 250 200 300 200 250 200 300 200 300 250 200 250 300]; xda(4)=[0.095 0.425 0.228 0.124 0.127 0.427 0.110 0.148 0.133 0.302 0.125 0.149 0.134 0.309 0.312 0.315 0.128 0.235]; data=[xda(1);xda(2);xda(3);xda(4)]; p0=[1,2,3,4,5,6] [p,resnorm]=lsqcurvefit(@myfun,p0,data,y) 请教各位大侠为什么我的程序运行不了,提示 “??? Input argument "x" is undefined.” |
» 猜你喜欢
求调剂
已经有3人回复
一志愿北京化工大学,初试成绩350求调剂
已经有14人回复
复试调剂
已经有4人回复
323分(计算机视觉和大模型项目)能直接上手
已经有3人回复
311分 22408 求调剂
已经有3人回复
320分人工智能调剂
已经有7人回复
一志愿郑大0705求调剂
已经有4人回复
0703化学
已经有10人回复
301求调剂
已经有10人回复
306分材料与化工求调剂
已经有6人回复
★ ★
adu886886(金币+2):鼓励应助!欢迎常来仿真模拟板块! 2010-07-03 22:53:01
anyuezhiji:在:和)中加个空格就不会出现表情了,以前可以在帖子中设置禁用表情的 2010-07-05 17:32:52
adu886886(金币+2):鼓励应助!欢迎常来仿真模拟板块! 2010-07-03 22:53:01
anyuezhiji:在:和)中加个空格就不会出现表情了,以前可以在帖子中设置禁用表情的 2010-07-05 17:32:52
|
我看完你的程序,提出以下几点看法: 第一,程序的前两行应该是单独的一个m文件; 第二,你有xda(1),...,xda(4)分别表示矩阵,这里就有问题; 第三,data和y矩阵的形式应该是一致的,在你的程序里data是12*6,而y是3*6,这肯定不行。 你用xda(1),...,xda(4)是否要做4次计算?如果是这样的话,可以先给出一个12*6矩阵,然后每三行取值做计算,这样循环4次就可以了。 下面是我自己试着做的,仅供参考: function F=myfun(x,xdata) F=x(1)*(xdata.^x(2)).*(xdata.^x(3)).*(xdata.^x(4))+x(5)*(xdata.^x(6)); clear;clc ydata=[41.894 115.712 58.319 57.324 67.9495 130.542 71.109 74.447 93.078 128.794 128.573 124.831 107.041 141.092 174.634 217.774 183.355 177.148]; data=[0.1 0.1 0.1 0.1 0.1 0.1 0.2 0.2 0.2 0.2 0.2 0.2 0.3 0.3 0.3 0.3 0.3 0.3 0.1 0.1 0.15 0.15 0.2 0.2 0.1 0.1 0.15 0.15 0.2 0.2 0.1 0.1 0.15 0.15 0.2 0.2 200 250 200 250 200 250 200 300 200 250 200 300 200 300 250 200 250 300 0.095 0.425 0.228 0.124 0.127 0.427 0.110 0.148 0.133 0.302 0.125 0.149 0.134 0.309 0.312 0.315 0.128 0.235]; x0=[1,2,3,4,5,6]; for i=1:4 fprintf('Case %d:',i) xdata=[data(3*i-2,: );data(3*i-1,: );data(3*i,: )]; [x,resnorm]=lsqcurvefit(@myfun,x0,xdata,ydata) end [ Last edited by anyuezhiji on 2010-7-5 at 17:30 ] |
2楼2010-07-03 21:01:20














回复此楼