标题:MATLAB数据拟和问题请教!!
只看楼主
liq000123
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2006-10-8
 问题点数:0 回复次数:12 
MATLAB数据拟和问题请教!!
VZFdO28Y.txt (814 Bytes) MATLAB数据拟和问题请教!!


我自己把图画出来了。。但是不知道怎么拟和。请教高手帮忙看下。。
其中《放矿高度与体积的关系曲线_1》应该是指数函数的。
《放矿椭球体_1》应该是个椭圆的。
函数最好可以显示在图上。。

OeMtZpIb.txt (689 Bytes) MATLAB数据拟和问题请教!!

搜索更多相关主题的帖子: MATLAB 数据 
2006-10-11 10:11
ydgsl
Rank: 3Rank: 3
等 级:论坛游民
威 望:8
帖 子:107
专家分:20
注 册:2006-9-20
得分:0 

上述第一个问题比较简单,结果为:
y=b1*exp(b2*x-b3*x^2)
b=[6708.80036, .243479098e-1, .276638857e-4]

y=b1+b2*exp(b3*x-b4*x^2)
b=[-13807.5916, 10805.0272, .210387493e-1, .217123205e-4]
请运行下列程序:
clear,clc
x=[0., 10., 20., 35., 45., 55., 65., 75., 85., 95., 105., 115., 125., 135., 145., 155., 165., 175., 185., 195., 205., 215., 225., 235., 245., 255., 265., 275., 285., 295., 305.];
y=[0., 2806.250, 4818.750, 9453.130, 11875., 14612.50, 21896.88, 27143.75, 39768.75, 49565.63, 61243.75, 77850., 93890.63, 114675., 135662.5, 151715.6, 179793.8, 209518.8, 238796.9, 268334.4, 318181.2, 354221.9, 390725., 434387.5, 493178.1, 550512.5, 603787.5, 668978.1, 738828.1, 794840.6, 860984.4];
b=[6708.80036, .243479098e-1, .276638857e-4]
plot(x,y,'o','markerfacecolor','k','markeredgecolor','k','markersize',8)
hold on
x1=min(x):2.5:max(x);
y1=b(1)*exp(b(2)*x1-b(3)*x1.^2);
plot(x1,y1,'linewidth',3)
b=[-13807.5916, 10805.0272, .210387493e-1, .217123205e-4]
y2=b(1)+b(2)*exp(b(3)*x1-b(4)*x1.^2);
plot(x1,y2,'r-','linewidth',2)
axis tight

第二个问题有点难度,结果稍后再给出。

2006-10-11 23:02
ydgsl
Rank: 3Rank: 3
等 级:论坛游民
威 望:8
帖 子:107
专家分:20
注 册:2006-9-20
得分:0 
第二个问题的结果为:
y=sqrt(b1*x+b2*(x-b3)^2);
其中:b=[9.67259042, -.464304995e-1, 53.1406257]

请运行下列程序:
y=[10., 15., 15., 20., 20., 20., 25., 25., 30., 30., 30., 30., 30., 30., 30., 35., 35., 35., 35., 30., 30., 30., 25., 25., 20., 20., 20., 15., 15., 10., 10., 5., 5., 0., 0., -5., -5., -10., -10., -15., -15., -20., -20., -20., -25., -25., -30., -30., -30., -35., -35., -35., -35., -30., -30., -30., -30., -30., -30., -30., -25., -25., -20., -20., -20., -15., -15., -10.];
x=[305., 295., 285., 275., 265., 255., 245., 235., 225., 215., 205., 195., 185., 175., 165., 155., 145., 135., 125., 115., 105., 95., 85., 75., 65., 55., 45., 35., 25., 20., 15., 10., 5., 0., 0., 5., 10., 15., 20., 25., 35., 45., 55., 65., 75., 85., 95., 105., 115., 125., 135., 145., 155., 165., 175., 185., 195., 205., 215., 225., 235., 245., 255., 265., 275., 285., 295., 305.];
b=[9.67259042, -.464304995e-1, 53.1406257]
x1=linspace(min(x)+6,max(x)+.5,120);
y1=sqrt(b(1)*x1+b(2)*(x1-b(3)).^2);
plot(x,y,'o','markerfacecolor','k','markeredgecolor','k','markersize',8)
hold on
plot(x1,y1,'b-','linewidth',3)
y2=-sqrt(b(1)*x1+b(2)*(x1-b(3)).^2);
plot(x1,y2,'b-','linewidth',3)
axis tight
2006-10-11 23:49
abingchem
Rank: 6Rank: 6
等 级:贵宾
威 望:24
帖 子:716
专家分:0
注 册:2004-12-30
得分:0 
高手,欢迎欢迎

此人已消失
2006-10-12 08:22
liq000123
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2006-10-8
得分:0 
高手啊。。
在这里谢谢了!!你能给我你的qq号或其他的联系方式吗?我还有其他问题要请教!!
2006-10-12 09:25
尘埃122
Rank: 5Rank: 5
等 级:贵宾
威 望:16
帖 子:127
专家分:0
注 册:2006-8-31
得分:0 
ydgsl请教

你参数拟合的方法是什么?用的是什么函数求出的b参数?

2006-10-12 10:09
liq000123
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2006-10-8
得分:0 

不好意思刚才没有注意。。
我也想问同样的问题 就是用的是什么函数求出的b参数?
还有第二个问题的x的数据和y的数据好象反了。。
我想把函数显示在图上怎么做的啊?

2006-10-12 11:02
ydgsl
Rank: 3Rank: 3
等 级:论坛游民
威 望:8
帖 子:107
专家分:20
注 册:2006-9-20
得分:0 
1、所使用的算法是缩张算法结合改良高斯牛顿法的合成算法。在matlab基础上编制了曲线、曲面拟合的程序。用此算法对所有NIST测试题均能顺利实现全局最优参数估计。对1stOpt9个测试题也能实现全局最优拟合,其中少部分(2-3个)确有较大难度。当然,对于第一个较简单的问题,可采用lsqcurvefit 或 nlinfit命令 可能也能得到所要的结果。
2、x和y的数据对调了,这样便于处理。否则要增加参数,增加复杂性。
3、运行我上述程序,便可得到图形,至于函数显示在图上的问题,可在图形窗口内用添加文本的方式解决。
2006-10-12 23:26
尘埃122
Rank: 5Rank: 5
等 级:贵宾
威 望:16
帖 子:127
专家分:0
注 册:2006-8-31
得分:0 
ydgsl 呵呵,有问题请教:

1.matlab中lsqcurvefit()函数运行时会出现“Optimization terminated: relative function value
changing by less than OPTIONS.TolFun.”运行警告,不知您是否也曾遇到?

2.能否介绍lsqcurvefit()和nlinfit()两种函数的区别和实现原理?

3.您的1stOpt9是否已经注册?运行的结果是否如众人所说,比一般的 统计软件拟合结果好?

呵呵,问题太多,请教大侠了

2006-10-13 11:40
ydgsl
Rank: 3Rank: 3
等 级:论坛游民
威 望:8
帖 子:107
专家分:20
注 册:2006-9-20
得分:0 
尘埃122:
1、matlab警告指的是前后几轮的目标函数变化小于规定值(1e-8),尚未收敛但已超出迭代次数(100次)。这种情况我也遇到过,但目前我主要是用自己的程序,其最优拟合的能力较强,也就很少使用nlinfit或lsqcurvefit了。
2、这两种命令均主要使用levenberg-Marquardt算法。
3、1stOpt不是我的产品,我编的程序比1stOpt有一定的距离,但相对简单方便,对于大多数会编程的人来说也能应用。其核心是缩张算法+Levenberg-Marquardt方法。目前可实现绝大多数能找到的测试问题的最优拟合(包括1stOpt测试问题),我们目前正在编制不依赖于Matlab的通用软件。
2006-10-13 19:33



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-95444-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.064234 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved