;+ ; Get the average from an ongoing accumulation. ; The result is then put into ; !g.s[0]. The contents of the accum buffer are cleared as a ; consequence of calling ave, unless the noclear keyword is set. ; ; @param accumnum {in}{type=integer}{default=0} Use this accum buffer. ; Defaults to the primary buffer, 0. There are 4 buffers total so ; this value must be between 0 and 3, inclusive. ; ; @keyword noclear {in}{optional}{type=boolean}{default=F} When set, the ; contents of the accum buffer are not cleared. This is useful ; when you want to see what the current average is but also plan on ; continuing to add data to that average. If this is not set, you ; would need to restart the accumulation to average more data. ; ; @keyword quiet {in}{optional}{type=boolean}{default=F} Normally, ave ; announces how many spectra were averaged. Setting this turns that ; announcement off. This is especially useful when multiple accum ; buffers are used within a procedure. ; ;
Note: It is a good idea to use sclear ; to clear the accum buffer before using it the first time so that ; you can be certain it is starting from a cleared (empty) state. ; ; @examples ; average some data ;
; sclear ; get,index=1 ; accum ; get,index=2 ; accum ; ave ;; ;
Average some data using another accum buffer ;
; sclear, 2 ; get,index=1 ; accum, 2 ; get,index=2 ; accum, 2 ; ave, 2 ;; ;
average some data, look at an intermediate result ;
; sclear ; get,index=1 ; accum ; get,index=2 ; accum ; ave,/noclear ; accum buffer is NOT clear here ; get,index=3 ; accum ; ave ; accum buffer IS clear here ;; ; @uses accumave ; @uses accumclear ; @uses set_data_container ; @uses set_data_container ; ; @version $Id: ave.pro,v 1.8 2005/05/24 20:38:35 bgarwood Exp $ ;- pro ave, accumnum, noclear=noclear, quiet=quiet compile_opt idl2 on_error, 2 if n_elements(accumnum) eq 0 then accumnum = 0 if (accumnum lt 0 or accumnum gt 3) then begin message,'accumnum must be in the range 0 to 3',/info return endif if !g.accumbuf[accumnum].n gt 0 then begin accumbuf = !g.accumbuf[accumnum] accumave, accumbuf, thisavg, quiet=quiet set_data_container, thisavg data_free, thisavg if (not keyword_set(noclear)) then accumclear, accumbuf !g.accumbuf[accumnum] = accumbuf endif else begin message, 'Nothing in the accum buffer, no change in data 0',/info endelse end