人生的意义就是思考其意义分享 http://blog.sciencenet.cn/u/qianlivan 天体物理工作者,家乡云南昆明。

博文

IDL中曲线拟合的一个注意事项

已有 16916 次阅读 2013-3-15 15:54 |个人分类:知识|系统分类:科研笔记| IDL, 曲线拟合

      我的一大毛病就是实用主义。实用主义的好处是短期效率较高,而坏处是没有足够的灵活性,也容易出错。
      我的工作中的一个重要操作是拟合曲线,这在IDL中是比较容易的,按格式写好表达式,比如
expr='P[0]*exp(-((x-P[1])/P[2])^2/2.0)+P[3]'
然后再猜个初值
start=[max13co,center,0.3,0.0]
然后就可以对数据(下面的例子中z13co,spec13co分别是数据的横、纵坐标值,rerr是误差值)进行拟合了,
result=MPFITEXPR(expr,z13co,spec13co,rerr,start)
       通常这样就可以,不过,和其他迭代方法一样,这样的数据拟合也是依赖于初值的选取的,初值选得够好,计算速度就快,也能得到正确的结果。一般来说,随便选 个初值也能得出正确结果,只是慢一些。但是偶尔也会出现无论怎么选初值也无法得到正确结果的情况。这个时候就需要额外的处理了,那就是给拟合加一些限制, 对于MPFITEXPR函数来说,就是加一个参数PARINFO,如下
result=MPFITEXPR(expr,z13co,spec13co,rerr,start,PARINFO=pc)
其中
pc=replicate({fixed:0,limited:[0,0],limits:[0.D,0.D]},4)
是一个结构体,其中记录了对拟合参数的要求。一些例子如下
pc(0).fixed=1
表面固定第一个参数;
pc(1).limited(0)=1
表示对第二个参数加下限,
pc(1).limits(0)=center-0.1
表示对第二个参数的下限值;
pc(1).limited(1)=1
表示对第二个参数加上限,
pc(1).limits(1)=center+0.1
表示对第二个参数的下限值;
       加了足够好的对参数的限制之后,通常就能得到正确的拟合结果了。但是根据我的实践,仍然有例外,这个时候,除了手动干预,好像就没什么更好的办法了。

https://blog.sciencenet.cn/blog-117333-670583.html

上一篇:天文塔木德(一)谱线基本公式
下一篇:IDL中曲线拟合的一个注意事项 (外一篇:以谱线拟合为例)
收藏 IP: 159.226.169.*| 热度|

1 李宇斌

该博文允许注册用户评论 请点击登录 评论 (4 个评论)

数据加载中...
扫一扫,分享此博文

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-5-22 08:04

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部