;+ NAME: ; xclip ;PURPOSE: ; Replaces with FLAGs the values of the array that are BEYOND ; the limits specified. ;CALLING SEQUENCE: ; xclip, amin, amax, y, flag=flag, _extra=_extra ;INPUT: ; amin, amax = the minumum and maximum values ; y = the input array ;OUTPUT: ; y = set to flag for points less than amin or greater than amax ;KEYWORDS: ; flag = the value that clipped data will be set to, the default is ; -0.0/0.0 (NaN) ; clip_adjacent = if set, then clip the vales adjacent to the bad ; ones, as in tdespike_ae.pro ;HISTORY: ; 2-feb-2007, jmm, jimm.ssl.berkeley.edu from Vassilis' ; clip_deflag.pro ; 9-feb-2007, change big value to Nan ; 9-oct-2007, added option to clip the points adjacent to the bad ; ones, as in tdespike_ae.pro ; 20-Oct-2007, Jmm, Added this comment to test commit comand ;$LastChangedBy$ ;$LastChangedDate$ ;$LastChangedRevision$ ;$URL$ ;- Pro xclip, amin, amax, y, flag = flag, clip_adjacent = clip_adjacent, $ _extra = _extra If size(flag, /type) GT 1 Then big = flag Else big = !values.f_nan ;More than max value? ;less than min value? ss = where(y Lt amin Or y Gt amax, nss) If(nss Gt 0) Then Begin If(keyword_set(clip_adjacent)) Then Begin ;Y can be 1, 2 or 3 dimensional, the clipping will happen in the first ;dimension szy = size(y) Case szy[0] Of 1:begin for k = 0l, nss-1l do begin i = ss[k] imin = (i-2) > 0 imax = (i+2) < (n_elements(y)-1) y[imin:imax] = big endfor end 2:begin For j = 0, szy[2]-1 Do Begin ty = y[*, j] xclip, amin, amax, ty, flag = flag, /clip_adjacent y[*, j] = ty Endfor end 3:begin For k = 0, szy[3]-1 Do For j = 0, szy[2]-1 Do Begin ty = y[*, j, k] xclip, amin, amax, ty, flag = flag, /clip_adjacent y[*, j, k] = ty Endfor end else: dprint, 'xclip, /clip_adjacent only will deal with 1 2 or 3d arrays' Endcase Endif Else y[ss] = big Endif ;All Done Return End