pro grid_data_1d,opt,data,x,dmin,dmax,nmin,x1,x2,dx,$ xg,data_av,data_sd,data_sdm,num_obs,num_good,freq ;------------------------------------------------------------------------------------------- ; Routine generates a uniform gridding of the input data. ; ; Input: ; data.....the data values, fltarr(n) ; x........the x-axis values dorresponding to data, fltarr(n) (e.g., time or height or whatever) ; dmin.....minimum data value to use ; dmax.....maximum data value to use ; nmin.....minimum number of data points in a bin to generate results ; ; x1.......start value for x grid ; x2.......end value ; dx.......interval for x grid ; ; Output: ; xg..........the x-axis grid values ; data_av.....the data averages on the uniform grid, fltarr(xg,yg) (data units) ; data_sd.....the data standard deviationson the uniform grid, fltarr(xg,yg) (data units) ; data_sdm....the data standard deviation of the mean on the uniform grid, fltarr(xg,yg) (data units) ; num_obs.....number of observations in each cell, fltarr(xg,yg) ; num_good....number of observations with dmin < data < dmin in each cell, fltarr(xg,yg) ; freq........frequency of observations with dmin < data < dmin, fltarr(xg,yg) (%) ; ; Source: Mark Hervig, GATS Inc. ;------------------------------------------------------------------------------------------- ;- Define the x grid, and output variables dx2 = dx*0.5 nxg = round( (x2 - x1) / float(dx) ) + 1 xg = findgen(nxg) * dx + x1 data_av = fltarr(nxg) data_sd = fltarr(nxg) data_sdm = fltarr(nxg) num_obs = fltarr(nxg) num_good = fltarr(nxg) ;- Loop over the grid for i = 0,nxg-1 do begin k = where(x gt xg(i)-dx2 and x le xg(i)+dx2,nk) num_obs(i) = nk if (nk gt 0) then begin tmp = data(k) kg = where(tmp ge dmin and tmp le dmax,nkg) num_good(i) = nkg if (nkg ge nmin) then begin data_av( i) = mean(tmp(kg)) if (nkg gt 1) then $ data_sd( i) = stddev(tmp(kg)) data_sdm(i) = data_sd(i) / sqrt(nkg) endif endif endfor ;- Frequency of observations with dmin < data < dmax freq = 100 * num_good / num_obs k = where(num_obs le 0,nk) if (nk gt 0) then freq(k) = 0. ;- done return end