pro calcspec,fluxarray,spectra,duration,period,sph,nfft,start,missing ;routine to calculate spectra ;determine nchannels, ncols and nrows arrsize = size(spectra) ncols = arrsize(1) nrows = arrsize(2) fluxpts = size(fluxarray) fluxpts = fluxpts(2) help,fluxarray ;generate fft times (still using decimal hours): times = findgen(ncols) times = start + (duration/ncols)/2 + times*(duration/ncols) for j=0,ncols-1 do begin ;make sure the data is contained in fluxarray (away from end of file): first_time = times(j) - (nfft/2.0)*period/sph last_time = times(j) + (nfft/2.0)*period/sph check = first_time gt fluxarray(0,0) and last_time lt $ fluxarray(0,fluxpts-1) if check then begin ;go ahead and grab the data first_data = where(fluxarray(0,*) gt times(j)) grab = [fluxarray(1,first_data(0)-nfft/2:first_data(0)-1+nfft/2)] grab = reform(grab) if n_elements(grab ne nfft) then begin print,'BIG ERROR!! (in getspec)' STOP endif spectrum = alog(abs(fft(hanning(nfft)*(grab),-1))) ;deriv(grab) spectrum(0) = missing spectrum(1) = missing spectra(j,*) = spectrum(0:nrows-1) endif else begin spectra(j,*) = missing ;make this white in color endelse ;if j eq 0 and start gt 36. then stop endfor ;========================================================================= ;Depress 60 Hz noise by force (including its harmonics, 120 Hz, 180 Hz) ;hzperbin = 1/ (nfft * period) ; ;bin = fix(60/hzperbin) ; ;dead_bin1 = bin ;dead_bin2 = bin - 1 ;dead_bin3 = bin + 1 ;dead_bin4 = bin * 2 ;dead_bin5 = bin * 2 - 1 ;dead_bin6 = bin * 2 + 1 ;;dead_bin7 = bin * 3 ;dead_bin8 = bin * 3 + 2 ;dead_bin9 = bin * 3 + 3 ; ;spectra(*,dead_bin1) = 0 ;spectra(*,dead_bin2) = 0 ;spectra(*,dead_bin3) = 0 ;spectra(*,dead_bin4) = 0 ;spectra(*,dead_bin5) = 0 ;spectra(*,dead_bin6) = 0 ;;spectra(*,dead_bin7) = 0 ;spectra(*,dead_bin8) = 0 ;spectra(*,dead_bin9) = 0 ;spectra(*,dead_bin1) = min(spectra) ;spectra(*,dead_bin2) = min(spectra) ;spectra(*,dead_bin3) = min(spectra) ;spectra(*,dead_bin4) = min(spectra) ;spectra(*,dead_bin5) = min(spectra) ;spectra(*,dead_bin6) = min(spectra) ;spectra(*,dead_bin7) = min(spectra) ;spectra(*,dead_bin8) = min(spectra) ;spectra(*,dead_bin9) = min(spectra) ;========================================================================= ;Depress DC component ;spectra(*,0) = 0 ;spectra(*,1) = 0 ;========================================================================= ;Enhance spectra level ;for kk = 0, ncols-1 do begin ; for ll = 0, nrows-1 do begin ; if spectra(kk,ll) LE 2 then begin ; spectra(kk,ll) = min(spectra) ; endif else begin ; spectra(kk,ll) = spectra(kk,ll) * 0.5 ; endelse ; endfor ;endfor return end