| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2484 人关注过本帖
标题:[求助]我的拟合为什么不好呢?
只看楼主 加入收藏
wswfp
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2007-9-21
收藏
 问题点数:0 回复次数:5 
[求助]我的拟合为什么不好呢?

我用lsqcurvefit函数和自定义的多元参数的函数拟合实验数据,但是得到的拟合曲线总是不太理想,请大侠帮偶看看是咋回事呢。

实验数据见上传的附件。

目的是拟合实验数据中第一列定义为Xdata,第六列定义为Ydata,要利用自定义的函数拟合该数据。

命令行如下:
clear
load Kopie_von_B282A070830_temp.TXT; % load experimental data
DRS=Kopie_von_B282A070830_temp;

xdata=DRS(:,1); % frequency
ydata=DRS(:,6); % eps''

% fit function
% eps2=-imag(x(1)./(1.0+(i*2*pi*xdata*x(4)).^x(2)).^x(3)+x(6)./
%(1.0+(i*2*pi*xdata*x(9)).^x(7)).^x(8))+x(5)+x(10)*1e-14./(8.8542e-12*2*pi*xdata);
eps2=inline('-imag(x(1)./(1.0+(i*2*pi*xdata*x(4)).^x(2)).^x(3)+x(6)./(1.0+(i*2*pi*xdata*x(9)).^x(7)).^x(8))+x(5)+x(10)*1e-14./(8.8542e-12*2*pi*xdata)','x','xdata');

% define parameters
deps1 = 6;
alpha1 = 0.65;
beta1 = 0.6;
tau1 = 2.8e-7;
eps2off = 0.1;

deps2 = 2.8;
alpha2 = 0.5;
beta2 = 0.5;
tau2 = 1;
sigmadc = 1.5e2;

x0=[deps1,alpha1,beta1,tau1,eps2off,deps2,alpha2,beta2,tau2,sigmadc];
% matrix of the initial value of parameters

opt=optimset('TolFun',1e-5);
[x,resnorm,residual]=lsqcurvefit(eps2,x0,xdata,ydata,[],[],opt);

eps2=-imag(x(1)./(1.0+(i*2*pi*xdata*x(4)).^x(2)).^x(3)+x(6)./...
(1.0+(i*2*pi*xdata*x(9)).^x(7)).^x(8))+x(5)+x(10)*1e-14./(8.8542e-12*2*pi*xdata);

loglog(xdata,ydata,'o',xdata,eps2,'or');

hold on



说明下,上述命令中用的初始值x0,别人用gnuplot拟合比我的效果好多了,不解ing


kCHtswNw.txt (13.45 KB) [求助]我的拟合为什么不好呢?


[此贴子已经被作者于2007-9-22 0:18:59编辑过]

搜索更多相关主题的帖子: 拟合 
2007-09-22 00:18
ydgsl
Rank: 3Rank: 3
等 级:论坛游民
威 望:8
帖 子:107
专家分:20
注 册:2006-9-20
收藏
得分:0 
用lsqcurvefit 和 nlinfit 对曲线和曲面拟合一般需提供较合适的初始值,对该组数据,你可以以下列数据作为初始值,可能较接近于
最适值。但该方程比较复杂,可能很难得到真正意义上的最优拟合。
x=[3330.942, .8401989, .5318848e-4, .6132211e-6, .3047702e-1, -11262.95, -2.000020, -7607.008, -160.8087, 85.35459]
RSS=.23485188e-2
SSy=.88826600
R^2=0.9974
从另外的角度看,x、y 都是大于 0 的实数,用上述虚数参数方程似乎毫无道理。
若用下列简单的5参数分式方程,其结果也比上述复杂方程简单而合理。
function fy=qst2(b,x)
fy=(b(1)+b(2)*x+b(3)*x.^2)./(1+b(4)*x+b(5)*x.^2);
则:
b=[.5250704601e-1, .5420301336e-2, .2083215596e-6, .1910427960, .8014534867e-6]
RSS=.9335171890e-3
MSe=5.9460e-006
R^2=.998949
2007-09-22 07:30
wswfp
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2007-9-21
收藏
得分:0 

谢谢版主的解答。


我所用的拟合方程是一个模型的方程,实验数据应该是符合这个方程所描述的模型的。另外我感到不解的是,为什么别人用gnuplot这个软件拟合的效果比我的好多了(你和出来的曲线几乎和实验曲线完全重合,且他所用的拟合方程和我用的完全一样)。

2007-09-24 00:29
Y05102036
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2007-9-25
收藏
得分:0 
回复 1# 的帖子
请问版主
RSS=.9335171890e-3
MSe=5.9460e-006
R^2=.998949
这些东西怎么得出来的,,我最近也在做回归拟合,,系数都求出了,我想得出拟合度R2,,不知道怎么搞,,我非计算机专业的!请你指点哈,谢谢!
2008-01-07 17:17
Y05102036
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2007-9-25
收藏
得分:0 
回复 2# 的帖子
请问版主
RSS=.9335171890e-3
MSe=5.9460e-006
R^2=.998949
这些东西怎么得出来的,,我最近也在做回归拟合,,系数都求出了,我想得出拟合度R2,,不知道怎么搞,,我非计算机专业的!请你指点哈,谢谢!
2008-01-07 17:18
ydgsl
Rank: 3Rank: 3
等 级:论坛游民
威 望:8
帖 子:107
专家分:20
注 册:2006-9-20
收藏
得分:0 
RSS=sum(y-yhat)^2,yhat为拟合值;
MSe=RSS/(n-m-1), m是参数的个数;
R^2=(SSy-RSS)/SSy, 为决定系数,又称拟合度。
2008-01-10 09:22
快速回复:[求助]我的拟合为什么不好呢?
数据加载中...
 
   



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

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