noman_dgf 发表于 2006-7-1 20:34

曲线拟合中的问题,请高手明示

我用一个函数去拟合一组数据,发现拟合后的曲线和原来的点相差很多,当然可能是因为函数取得不好,但是总不至于所有的点都离拟合后的曲线十万八千里吧,我把数据贴在下面,请高手指点迷津,感激不尽^_^<BR><BR>function linshi<BR>%扫描电压<BR>a=;<BR>%在电压a扫描时二极管的输出<BR>amb1=;<BR>%画图<BR>subplot(2,1,1); plot(a,amb1,'r')<BR>hold on;<BR>%曲线拟合数据b<BR>fun=inline('0.025875.*log((amb1.*6.287e18)./(b(1).*300.^b(3)))+amb1.*b(2)','b','amb1')<BR>b=lsqcurvefit(fun,,amb1,a)<BR>%画出拟合后的曲线<BR>subplot(2,1,2); fplot('0.025875.*log((x.*6.287e18)./(0.0001.*300.^2.9829))+x.*164.1432',);<BR>

[ 本帖最后由 mjhzhjg 于 2007-6-18 23:57 编辑 ]

bainhome 发表于 2006-7-5 00:58

y = Sqr((p1+p3*x)/(1+p2*x+p4*x^2))       
p1              -0.00590551283876795
p2              -1.80367859542165
p3              0.0105829517344612
p4              0.898279602287675
上述解基本近似,推荐使用
==========================================================================
function linshi
%扫描电压
xdata=;
%在电压a扫描时二极管的输出
ydata=[495.6e-9 811.4e-9 1.493e-6 2.527e-6 4.377e-6 7.557e-6 12.87e-6 20.91e-6 33.08e-6 ...
50.46e-6 74.24e-6 106.1e-6 148.4e-6 204.5e-6 277.5e-6 370.7e-6 483.8e-6 621.1e-6 782.2e-6 963.4e-6 1.168e-3];
%画图
plot(xdata,ydata,'r')
hold on;
%曲线拟合数据b
fun=inline('0.025875.*log((xdata.*6.287e18)./(b(1).*300.^b(3)))+xdata.*b(2)','b','xdata')
b=lsqcurvefit(fun,,xdata,ydata)
%画出拟合后的曲线
fplot(['0.025875*log((x*6.287e18)./(',num2str(b(1)),'.*300.^',num2str(b(3)),'))+x.*',num2str(b(2))],);

==========================================================================
同样是你给定的函数,上述为正确形式,当然,由于公式或者初值的问题,拟合效果非常不好,不过没你的结果那么离谱。

[ 本帖最后由 bainhome 于 2006-7-5 03:41 编辑 ]

noman_dgf 发表于 2006-7-5 19:34

哦,多谢了^_^,我再看看吧
页: [1]
查看完整版本: 曲线拟合中的问题,请高手明示