| 查看: 269 | 回复: 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.” |
» 猜你喜欢
最失望的一年
已经有12人回复
拟解决的关键科学问题还要不要写
已经有8人回复
存款400万可以在学校里躺平吗
已经有29人回复
求推荐英文EI期刊
已经有5人回复
请教限项目规定
已经有4人回复
国自然申请面上模板最新2026版出了吗?
已经有20人回复
26申博
已经有3人回复
基金委咋了?2026年的指南还没有出来?
已经有10人回复
基金申报
已经有6人回复
疑惑?
已经有5人回复
★ ★
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













回复此楼