function bindat = binave(data,r) % BINAVE: averages vector data in bins of length r. % bindat=BINAVE(data,r) computes an average vector of the vector % data in bins of length r. The last bin may be the average of % less than r elements. Useful for computing daily average time % series (with r=24 for hourly data). % % INPUT: data - data vector % r - number of elements in bin to be averaged % % OUTPUT: bindat - bin-averaged vector %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % 3/8/97: version 1.0 % 9/19/98: version 1.1 (vectorized by RP) % 8/5/99: version 2.0 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % check input if nargin < 2 error('Not enough input arguments.') end if abs(r-fix(r)) > eps error('Bin size R must be a positive integer.') end if fix(r) == 1 bindat = data; return end if r <= 0 error('Bin size R must be a positive integer.') end [N,M]=size(data); % compute bin averaged series l = length(data)/r; l = fix(l); bindat = mean(reshape(data(1:l*r),r,l)); if length(data)>l*r, bindat=[bindat,mean(data(l*r+1:end))]; end; if N~=1 bindat=bindat'; end