24小时热门版块排行榜    

查看: 839  |  回复: 7
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

wgy318

金虫 (小有名气)

[交流] 【求助】数据拟合

我想拟合一个两个自变量的模型的六个参数,编辑了如下的程序,可是系统总是报错,请大家看看程序编写的是否正确,谢谢!
我是新手,请大家多给点意见。


M文件如下:
CODE:
function F=myfun(a,data)
x(1)=data(1,:);
x(2)=data(2,:);
F=a(3)*exp((-a(5))*(x(2)-a(4))/(a(6)+(x(2)-a(4))))/(1+(a(3)*exp((-a(5))*(x(2)-a(4))/(a(6)+(x(2)-a(4))))*x(1)/a(1))^(1-a(2)))
命令窗口程序如下:
>>  x1=[40 60 80 100 150 200 300 400 500 600 800 1000 1200 40 60 80 100 150 200 300 400 500 600 800 1000 1200 40 60 80 100 150 200 300 400 500 600 800 1000 1200 40 60 80 100 150 200 300 400 500 600 800 1000 1200 40 60 80 100 150 200 300 400 500 600 800 1000 1200];
x2=[423.15,423.15,423.15,425.15,425.15,425.15,425.15,425.15,425.15,425.15,425.15,425.15,425.15,431.15,431.15,431.15,431.15,431.15,431.15,431.15,431.15,431.15,431.15,431.15,431.15,431.15,437.15,437.15,437.15,437.15,437.15,437.15,437.15,437.15,437.15,437.15,437.15,437.15,437.15,443.15,443.15,443.15,443.15,443.15,443.15,443.15,443.15,443.15,443.15,443.15,443.15,443.15,449.15,449.15,449.15,449.15,449.15,449.15,449.15,449.15,449.15,449.15,449.15,449.15,449.15];
ydata=[500 367.4 316.4 351 272 249 207 180 128 121 86.2 80.8 69.1 172.9 142.4 122.1 114 95 84 69.2 60 53 48 41.2 36.2 31.6 152.9 122.4 107.1 98 84 71 58.2 51 45.6 41.8 36.4 32.7 30.0 132.5 115.4 101.9 90 76 69 57.1 51 44.9 40.8 35.2 31.0 28.2 112.1 101.9 86.7 82 68 61 50.3 45 41 38 32.6 29 26.2];
data=[x1;x2];
a0=[5000 0.3 3.5*10e13 300 20 1.5];
[a,resnorm]=lsqcurvefit(@myfun,a0,data,ydata)

[ Last edited by nono2009 on 2010-9-14 at 06:02 ]
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lijinfeng042

木虫 (小有名气)

Matlab

★ ★
robert2020(金币+2):辛苦了!鼓励继续应助! 2010-09-13 18:49:53
wgy318(金币+2): 2010-09-13 21:07:35
这个函数F拟合的效果不太理想啊  resnorm = 3.9906e+004
工作了,偶尔会上来~可以关注新浪微博 @云是风的梦_Matlab
4楼2010-09-13 09:18:16
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 8 个回答

lidaxue

木虫 (正式写手)

之乎者也

wgy318(金币+3):问题已经解决了,不过还是要谢谢你 2010-09-09 08:53:57
请楼主给出报错信息!
Comeon!
2楼2010-09-08 10:27:17
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

孤鸿飘逸

金虫 (正式写手)


nono2009:编辑内容 2010-09-13 06:18
nono2009(金币+1):用[code][/code]贴程序的效果比较好。 2010-09-13 06:19:15
wgy318(金币+6):问题已经解决,非常感谢 2010-09-13 08:43:58
函数写为:(注意是点乘,点除)
CODE:
function F=myfun(a,data)
xx=data(1,:);
xxx=data(2,:);
F=a(3).*exp((-a(5))*(xxx-a(4))./(a(6)+(xxx-a(4))))./(1+(a(3).*exp((-a(5)).*(xxx-a(4))./(a(6)+(xxx-a(4)))).*xx/a(1)).^(1-a(2)))

输入参数值运行结果为:

Maximum number of function evaluations exceeded;
   increase options.MaxFunEvals

a =
  1.0e+014 *

    0.0000    0.0000    3.5000    0.0000    0.0000    0.0000


resnorm =

  3.9906e+004
我这台机子是实验室的matlab6.1,估计版本太差,你用高版本的运行看看

[ Last edited by nono2009 on 2010-9-13 at 06:18 ]
3楼2010-09-12 18:11:56
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wgy318

金虫 (小有名气)

resnorm要多少才算理想
5楼2010-09-13 21:09:18
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通表情 高级回复 (可上传附件)
信息提示
请填处理意见