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

博文

CUPID FINDCLUMPS拟合分子云核(一)

已有 5354 次阅读 2010-10-28 21:17 |个人分类:总结|系统分类:科研笔记| 数据处理, 分子云

       用CUPID里的FINDCLIMPS拟合分子云中的团块的时候发现拟合出了很多虚假的团块,在光谱里看的时候并没有相应的高斯成分。所以决定看看源代码,做点笔记。CUPID乃至整个Starlink的源代码都可以在此获得:
http://starlink.jach.hawaii.edu/git/?p=starlink.git;a=tree;f=applications/cupid/cupidsub;h=b3b3e373563171513790271b656ad6ecb64ed679;hb=HEAD

      我主要用到的是Gaussclump的方法。首先需要明确的是拟合函数为何,虽然高斯函数的性质大同小异,但是一些系数还是会很大程度地影响拟合的结果以及最后的参数,因为我需要的是团块尺度之类的值,系数差一倍,最终的结果就差不少了。

        从cupidgcmodel.c(cupid就是CUPID,GC指的是Gaussclump)中可以看到以下语句(这里以倒序查看)返回值是ret
return ret;
之前一句提到ret是
m = peak*expv + par[ 1 ];
……
ret=m;
其中expv因子是指数函数,也就是高斯函数的主要部分。程序的前部提过
expv = exp( -K*em );这里的K在最前面定义过
/* 4*ln( 2.0 ) */
#define K 2.772588722239781
表明这里的宽度是半高全宽(FWHM),而em就是通常的那个平方项,程序中有几种选项,以一维为例
if( ndim == 1 ) {
                            em = x0_off*x0_off/dx0_sq;
……
其中x0_off = x[ 0 ] - par[ 2 ];要说这par数组,还是看一下程序说明
*           par[0]: Intrinsic peak intensity of clump ("a0" in Stutski & Gusten)
*           par[1]: Constant intensity offset ("b0" in Stutski & Gusten)
*           par[2]: Model centre on axis 0 ("x1_0" in Stutski & Gusten)
*           par[3]: Intrinsic FWHM on axis 0 ("D_xi_1" in Stutski & Gusten)
*           par[4]: Model centre on axis 1 ("x2_0" in Stutski & Gusten)
*           par[5]: Intrinsic FWHM on axis 1 ("D_xi_2" in Stutski & Gusten)
*           par[6]: Spatial orientation angle ("phi" in Stutski & Gusten)
*                        In rads, positive from +ve GRID1 axis to +ve GRID2 axis.
*           par[7]: Model centre on velocity axis ("v_0" in Stutski & Gusten)
*           par[8]: Intrinsic FWHM on velocity axis ("D_xi_v" in Stutski &
*                                                     Gusten)
*           par[9]: Axis 0 of internal velocity gradient vector ("alpha_0"
*                        in Stutski & Gusten), in vel. pixels per spatial pixel.
*           par[10]: Axis 1 of internal velocity gradient vector ("alpha_1"
*                          in Stutski & Gusten), in vel. pixels per spatial pixel.
也就是说par[2]就是通常高斯函数里的x0。这里的dx0_sq可在前面找到,就是高斯函数的宽度的平方,这里把波束宽度和本征宽度都考虑上了,最后的宽度为二者的平方和。
 t = par[ 3 ]*par[ 3 ];
dx0_sq = cupidGC.beam_sq + t;

       现在分析 ret = ret*peak*expv;中的peak,程序前半有
peak = par[ 0 ]*peakfactor;
大致意思是团块本征的峰值亮度由于仪器的波束的平滑会变小,这个衰减因子可以从以下语句看出来,就是本征宽度和总宽度的比值(如果是多维的就是每一维上这个因子的积)。
peakfactor = sqrt( peakfactor_sq );
……
peakfactor_sq = t/dx0_sq;

至此函数形式分析得差不多,这个函数还有其它分支,是计算这个模型函数的导数的,这里不提。所以函数形式应该为(一维为例)
 
注意,这里的宽度是半高全宽(FWHM),和通常高斯函数中宽度的关系为


除此之外需要注意的是作为拟合参数的峰值par[0]在写成函数的时候是被降低的,所以拟合出来的团块的峰值可能比数据中的峰值高。本征的宽度par[3]、par[5]和par[8]是被展宽的,所以拟合结果可能比数据中的宽度小。这些都需要看输出程序中相应的选项。

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

上一篇:用IDL生成某个分布的二维数组
下一篇:CUPID FINDCLUMPS拟合分子云核(二)
收藏 IP: .*| 热度|

0

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

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

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

GMT+8, 2024-11-23 19:36

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部