Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
|
![]() |
#1 |
初级会员
注册日期: 2008-04-03
年龄: 45
帖子: 4
声望力: 0 ![]() |
![]()
函数为:y=0.1+(a-0.1).*(1-erf(x./(2.*sqrt(b.*7776000))));
erf(x)为误差函数,要求x必须为实数, x=[0.25,0.75,1.25,1.75,2.25,2.75,3.5,4.5,5.5,7,8,10,12,14,16] y=[2.409099672,1.565396114,0.940174982,0.605753968,0.658565222,0.622579467,... 0.253082852,0.276049767,0.221442495,0.157116236,0.102593353,0.069936958,... 0.065624737,0.075597258,0.062826299]; 现在要用最小二乘法求解a和b的值来,我用cftool做的时候,用上面的函数表达式,提示input必须为实数,拟合无法进行,erf里面应该是实数啊,不知道为什么?后来我在erf()外面加了一个abs(),可以拟合了,但是拟合的结果不合适,b应该是正数,却得到了负数的结果来,搞不定,请前辈指点,在线急等回复。 再就是cftool实现的拟合好像不是最小二乘法吧?! |
![]() |
![]() |
![]() |
#2 |
高级会员
注册日期: 2007-06-24
年龄: 70
帖子: 188
声望力: 21 ![]() |
![]()
y=0.1+(b(1)-0.1)*(1-erf(b(2)*x));
b=[2.5503709, 0.44392804] |
![]() |
![]() |
![]() |
#3 |
初级会员
注册日期: 2008-04-03
年龄: 45
帖子: 4
声望力: 0 ![]() |
![]()
多谢回复,您的y表达式跟我的不一样噢!这样得到结果就会不同!
|
![]() |
![]() |
![]() |
#4 |
高级会员
注册日期: 2007-06-24
年龄: 70
帖子: 188
声望力: 21 ![]() |
![]()
solve('1/(2*sqrt(b*7776000))-.44392804')
ans = 0.0000001631393028 不就一样了吗?! |
![]() |
![]() |
![]() |
#5 |
初级会员
注册日期: 2008-04-03
年龄: 45
帖子: 4
声望力: 0 ![]() |
![]()
多谢,的确是因为b值接近于零缘故,我后来将sqrt(b.*7776000)=c,函数就变成
y=0.1+(a-0.1).*(1-erf(x/(2*c))),果然没有出现上面的问题,拟合出了a和c,利用sqrt(b.*7776000)=c再求出了b,这样应该没有什么问题吧。但是b值数量级应当在e-12左右,计算结果在e-7,不知是试验数据有问题还是计算方法有误! 谢谢各位指教! 提前预祝大家新春快乐,新年有气象! |
![]() |
![]() |
![]() |
#6 |
初级会员
注册日期: 2009-05-28
年龄: 43
帖子: 1
声望力: 0 ![]() |
![]()
可以看下这个,LabVIEW编的非线性曲线拟合软件,不需要初始值就可以进行拟合求出函数的系数值。
http://www.pudn.com/downloads168/sou...ail775986.html |
![]() |
![]() |
![]() |
|
|
![]() |
||||
主题 | 主题作者 | 版面 | 回复 | 最后发表 |
[资料]BP网络总结及应用实例 | guofeng0108 | MATLAB论坛 | 37 | 2012-06-11 22:08 |
simulink模型生成代码 | verywell | MATLAB论坛 | 0 | 2009-03-24 11:21 |
[求助]请求大侠解答简单问题 | fenyun | MATLAB论坛 | 1 | 2009-02-11 03:13 |
[求助]电力系统机组启停优化算法程序 | woshi523de | MATLAB论坛 | 1 | 2008-11-18 08:12 |
【求助】这个微分方程怎么写成函数文件呢? | grasszhang | MATLAB论坛 | 0 | 2007-08-30 15:25 |