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

📄 dist_circle.pro

📁 basic median filter simulation
💻 PRO
字号:
pro dist_circle ,im, n, xcen ,ycen, DOUBLE = double ;+; NAME: ;      DIST_CIRCLE; PURPOSE:      ;      Form a square array where each value is its distance to a given center.; EXPLANATION:;      Returns a square array in which the value of each element is its ;      distance to a specified center. Useful for circular aperture photometry.;; CALLING SEQUENCE:;      DIST_CIRCLE, IM, N, [ XCEN, YCEN,  /DOUBLE ];; INPUTS:;      N = either  a scalar specifying the size of the N x N square output;               array, or a 2 element vector specifying the size of the;               N x M rectangular output array.;; OPTIONAL INPUTS:;      XCEN,YCEN = Scalars designating the X,Y pixel center.  These need;               not be integers, and need not be located within the;               output image.   If not supplied then the center of the output;               image is used (XCEN = YCEN = (N-1)/2.).;; OUTPUTS:;       IM  - N by N (or M x N) floating array in which the value of each ;               pixel is equal to its distance to XCEN,YCEN;; OPTIONAL INPUT KEYWORD:;       /DOUBLE - If this keyword is set and nonzero, the output array will;               be of type DOUBLE rather than floating point.;; EXAMPLE:;       Total the flux in a circular aperture within 3' of a specified RA;       and DEC on an 512 x 512 image IM, with a header H.;;       IDL> adxy, H, RA, DEC, x, y       ;Convert RA and DEC to X,Y;       IDL> getrot, H, rot, cdelt        ;CDELT gives plate scale deg/pixel;       IDL> cdelt = cdelt*3600.          ;Convert to arc sec/pixel;       IDL> dist_circle, circle, 512, x, y  ;Create a distance circle image;       IDL> circle = circle*abs(cdelt[0])   ;Distances now given in arcseconds;       IDL> good = where(circle LT 180)  ;Within 3 arc minutes;       IDL> print,total( IM[good] )      ;Total pixel values within 3';; RESTRICTIONS:;       The speed of DIST_CIRCLE decreases and the the demands on virtual;       increase as the square of the output dimensions.   Users should;       dimension the output array as small as possible, and re-use the;       array rather than re-calling DIST_CIRCLE;; MODIFICATION HISTORY:;       Adapted from DIST    W. Landsman            March 1991;       Allow a rectangular output array   W. Landsman     June 1994;       Converted to IDL V5.0   W. Landsman   September 1997;       Add /DOUBLE keyword, make XCEN,YCEN optional  W. Landsman Jun 1998;- On_error,2                ;Return to caller if an error occurs if N_params() LT 2  then begin     print,'Syntax - DIST_CIRCLE, im, n,[ xcen, ycen, /DOUBLE ]'      print,'IM - output image array'     print,'N - size of the output image array, scalar or 2 element vector'     print,'XCEN,YCEN - position from which to specify distances'     return endif if N_elements(N) EQ 2 then begin        nx = n[0]        ny = n[1]  endif else if N_elements(N) EQ 1 then begin        ny = n        nx = n                    ;Make a row endif else message, $        'ERROR - Output size parameter N must contain 1 or 2 elements' if N_params() LT 4 then begin        xcen = (nx-1)/2. & ycen = (ny-1)/2. endif if keyword_set(DOUBLE) then begin         x_2 = (dindgen(nx) - xcen) ^ 2     ;X distances (squared)         y_2 = (dindgen(ny) - ycen) ^ 2     ;Y distances (squared)           im = dblarr( nx, ny, /NOZERO)      ;Make uninitialized output array endif else begin         x_2 = (findgen(nx) - xcen) ^ 2     ;X distances (squared)         y_2 = (findgen(ny) - ycen) ^ 2     ;Y distances (squared)           im = fltarr( nx, ny, /NOZERO)      ;Make uninitialized output array endelse for i = 0L, ny-1 do begin                ;Row loop        im[0,i] = sqrt(x_2 + y_2[i])     ;Euclidian distance endfor return end

⌨️ 快捷键说明

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