skyboyliu 发表于 2006-8-28 20:34

请问在matlab中,曲线的指数形式拟合怎么实现?

在很多的matlab书籍中都只提到了曲线的线性拟合和多项式拟合,但对指数拟合很少有提到,可现在我需要用指数拟合来做一个问题,请各位大虾指教下指数形式的拟合该怎么实现,谢谢先~~~

多情清秋 发表于 2006-8-28 20:43

取对数,然后用多项式拟合

skyboyliu 发表于 2006-8-28 20:54

回复 #1 skyboyliu 的帖子

谢谢哈
但是具体是怎么做的呢?
能不能给详细指点下啊?

多情清秋 发表于 2006-8-28 20:58

参考帖子http://forum.vibunion.com/forum/viewthread.php?tid=8607

skyboyliu 发表于 2006-8-28 21:13

回复 #3 skyboyliu 的帖子

我去看了那帖子,上面也是这样说的,但是最后也没有具体解决怎么做的问题
校长能不能给个具体的例子啊?
比如我要拟合的式子的形式是
y=a*exp(d1*x)+b*exp(d1*x)+c*exp(d3*x)
数据为
x=;
y=;
该怎么做呢?

[ 本帖最后由 skyboyliu 于 2006-8-29 09:57 编辑 ]

bainhome 发表于 2006-8-29 01:20

连x和y都不同维你就敢拿上来作例子问问题...
function ExpFitSolve
clc
x=;
y=;
str=['a(1)*exp(a(2)*x)+a(3)*exp(a(4)*x)+a(5)*exp(a(6)*x)'];
ff=inline(str,'a','x');
a0 =[-300,-5,200,-1,-40,0];                  % Starting guess
= lsqcurvefit(ff,a0,x,y)
str1=[num2str(a(1)),'*exp(',num2str(a(2)),'*x)+',num2str(a(3)),'*exp(',num2str(a(4)),'*x)+',...
    num2str(a(5)),'*exp(',num2str(a(6)),'*x)'];
ff1=inline(str1,'x');
xx=linspace(0.1,1);
plot(xx,ff1(xx),x,y,'r*')
运行结果:
Optimization terminated: relative function value
changing by less than OPTIONS.TolFun.
a =
-215.6447   -0.9299217.4042   -0.1350-21.9148   -0.9272
resnorm =
   33.1770

假如不知道各个拟合参数的具体意义的话,这种问题用1stopt最方便,用MATLAB猜测初值都累死了!
Title "Type your title here";
Parameters p(1:6);
//Variable ;
Function y=p1*exp(p2*x)+p3*exp(p4*x)+p5*exp(p6*x);
data;
//x   y
0   0
.110
.230
.345
.453
.564
.674
.782
.890
.996
1.0 103
运行结果:

p1                 -204.397990804389
p2                 -0.940369929518947
p3                 225.924142434237
p4                 -0.105081317615115
p5                 -23.3984698872791
p6                 -0.105081295787684


[ 本帖最后由 bainhome 于 2006-8-29 01:29 编辑 ]

skyboyliu 发表于 2006-8-29 09:53

回复 #5 skyboyliu 的帖子

谢谢大牛啊~~`
当时在输入y时少输了一个~~`
由于是对lstopt不了解就用了matlab做了,
而且有很多东西用matlab做很方便,就没有去学lstopt了~~
非常感谢分享,我去试试

skyboyliu 发表于 2006-8-29 12:31

回复 #5 skyboyliu 的帖子

再请教下
在 = lsqcurvefit(ff,a0,x,y)的左边,resnorm有什么作用?
我在程序中好象没看到在哪有利用它啊~~
在我删了它后运行,也能得到结果,这是怎么回事呢?
谢谢!!

多情清秋 发表于 2006-8-29 15:11

原帖由 skyboyliu 于 2006-8-29 12:31 发表
再请教下
在 = lsqcurvefit(ff,a0,x,y)的左边,resnorm有什么作用?
我在程序中好象没看到在哪有利用它啊~~
在我删了它后运行,也能得到结果,这是怎么回事呢?
谢谢!!

帮助里有说明:the value of the squared 2-norm of the residual at x: sum{(fun(x,xdata)-ydata).^2}
可以返回也可以不返回,所以去掉也可以正常运行
页: [1]
查看完整版本: 请问在matlab中,曲线的指数形式拟合怎么实现?