Reducing the size of an array by averaging points within the array (IDL) -


while sure there answer, , question low-level (but it's easy things trip up), main issue trying word question.

say have following arrays:

time=[0,1,2,3,4,5,6,7,8,9,10,11] ;in seconds data=[0,1,2,3,4,5,6,7,8,9,10,11]  

the 'time' array in bins of '1s', instead array in bins of '2s' data mean:

time=[0,2,4,6,8,10] ;in seconds data=[0.5,2.5,4.5,6.5,8.5,10.5]  

is there (and sure there is) idl function implement in idl? actual data array is:

data          double    = array[15286473] 

so rather use existing, efficient, solution unnecessarily creating own.

cheers, paul

nb: can change time array want interpolating data (interpol)

idl> x=[0,1,2,3,4,5,6,7,8,9,10] idl> x_new=interpol(x,(n_elements(x)/2)+1.) idl> print, x_new                                 0.00000      2.00000      4.00000      6.00000      8.00000      10.0000 

the issue data array

i think need rebin: http://www.exelisvis.com/docs/rebin.html

congrid provides similar functionality. if rebin not solve problem, should work:

step = 2 select = step * indgen(floor(n_elements/step)) new_time = (smooth(time, step))[select] new_data = (smooth(data, step))[select] 

you might want set /edge_truncate smooth, based on requirements. also, won't interpol work you?


Popular posts from this blog

c# - ODP.NET Oracle.ManagedDataAccess causes ORA-12537 network session end of file -

matlab - Compression and Decompression of ECG Signal using HUFFMAN ALGORITHM -

utf 8 - split utf-8 string into bytes in python -