⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 group.pro

📁 basic median filter simulation
💻 PRO
字号:
PRO GROUP, X, Y, RCRIT, NGROUP;+; NAME:;      GROUP; PURPOSE:;      Assign stars with non-overlapping PSF profiles into distinct groups; EXPLANATION:;      Part of the IDL-DAOPHOT sequence;; CALLING SEQUENCE:;      GROUP, X, Y, RCRIT, NGROUP;; INPUTS:;      X - vector, giving X coordinates of a set of stars.;      Y - vector, giving Y coordinates of a set of stars.;           If X and Y are input as integers, then they will be converted to ;           floating point;      RCRIT - scalar, giving minimum distance between stars of two;               distinct groups.  Stars less than this distance from;               each other are always in the same group.    Stetson suggests;               setting the critical distance equal to the PSF radius +;               the Fitting radius.;; OUTPUTS:;      NGROUP - integer vector, same number of elements as X and Y,;               giving a group number for each star position.  Group;               numbering begins with 0.;; METHOD:;      Each position is initially given a unique group number.  The distance;      of each star is computed against every other star.   Those distances;      less than RCRIT are assigned the minimum group number of the set.   A;      check is then made to see if any groups have merged together.;; PROCEDURES USED:;      REM_DUP();; REVISION HISTORY:;      Written W. Landsman  STX                  April, 1988;      Major revision to properly merge groups together  W. Landsman   Sep 1991;      Work for more than 32767 points    W. Landsman  March 1997;      Converted to IDL V5.0   W. Landsman   September 1997;      Avoid overflow if X and Y are integers      W. Landsman  Feb. 1999   ;- On_error,2                                   ;Return to caller if N_params() LT 4 then begin    print,'Syntax - group, x, y, rcrit, ngroup'    print,'   x,y -   Input position vectors'    print,'   rcrit - Minimum radius between stars of different groups'    print,'   ngroup - Output vector of group indices'    return endif rcrit2 = rcrit^2                            ;Don't bother taking square roots npts = min( [N_elements(x), N_elements(y)] )    ;Number of stars if npts LT 2 then message, $    'ERROR - Input position X,Y vectors must contain at least 2 points x = 1.0*x  &  y = 1.0*y   ;Make sure at least floating point ngroup =  lindgen(npts)   ;Initially each star in a separate group;  Whenever the positions between two stars are less than the critical;  distance, assign both stars the minimum group id.   The tricky part;  is to recognize when distinct groups have merged together. for i = 0l,npts-2 do begin      dis2 = (x[i] - x[i+1:*])^2 + (y[i] - y[i+1:*])^2      good =  where( dis2 LE rcrit2, ngood)      if ngood GT 0 then begin             ;Any stars within critical radius?                good = [i,good+i+1]                groupval = ngroup[good]                mingroup = min( groupval )                    if ( mingroup LT i ) then begin      ;Any groups merge?                       groupval = groupval[ where( groupval LT i, nval) ]                       if nval GT 1 then $                         groupval = groupval[ rem_dup(groupval) ]                         nval = N_elements(groupval)                           if nval GE 2 then for j= 1, nval-1 do begin                               redo = where ( ngroup EQ groupval[j], ndo )                             if ndo GT 0 then ngroup[redo] = mingroup                           endfor                    endif                ngroup[good] = mingroup      endifendfor;; Star are now placed in distinct groups, but they are not ordered; consecutively.  Remove gaps in group ordering; if max(ngroup) EQ 0 then return               ;All stars in one group ? ghist = histogram(ngroup,min=0) gmax = max(ghist) val = where(ghist GE 1, ngood)   if ( ngood GT 0 ) then $           for i = 0, ngood-1 do ngroup[ where( ngroup EQ val[i] ) ] = i message,'Number of Groups: '+ strtrim(ngood,2), /INF  message,'Largest group size '+ strtrim(gmax,2) + ' stars',/INF return end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -