;+ ; This procedure decimates a spectrum (i.e. thins the spectrum by ; paring every nth channel). The procedure still needs to be generalized ; by offering the option to choose a start channel. At present, it ; always starts at channel 0. The dc argument is modified in place. ; ; @param dc {in}{required}{type=data container} data container (spectrum or continuum) ; @param nchan {in}{required}{type=integer} choose every nth channel ; ; @examples ;
; get,index=1 ; a = data_new() ; data_copy,!g.s[0],a ; show ; dchanning,a ; show,a ; dcdecimate,a,2 ; show,a ;; ; @version $Id: dcdecimate.pro,v 1.2 2004/11/17 21:47:51 bgarwood Exp $ ;- pro dcdecimate, dc,nchan oldarr = *dc.data_ptr len = n_elements(oldarr) ; set the ref channel to channel 0 dc.reference_frequency = dc.reference_frequency - dc.frequency_interval*dc.reference_channel dc.reference_channel = 0 ; select every nth channel, starting at channel 0 if (len mod nchan eq 0) then $ decim = fltarr(len/nchan) $ else $ decim = fltarr(len/nchan + 1) for i=0,len-1,nchan do decim[i/nchan] = oldarr[i] *dc.data_ptr = decim dc.frequency_interval = dc.frequency_interval * float(nchan) end