function m = meanslices(fpat, ilist, ns, nps) % Function m = meanslices(ilist, ns, nps) % % % INPUTS % fpat string containing file pattern % ilist list of iteration values % ns number of slices to process at at time % nps number of values per slice % % OUTPUTS % m output array of dimension ns*nps if nargin ~= 4 disp('Error: wrong number of arguments') end deltatT = 1200; % model time step size (s) tavefreq = 259200; % averaging period (s) startDate = datenum(1992,1,1); % model integration starting date oldyear = -1; newyear = oldyear; is = 1; for is = 1:ns disp(['Processing slice: ' sprintf('%d',is)]); nm = 0; m = zeros(nps,1); i = 1; for i = 1:length(ilist) iter = ilist(i); str = datestr(startDate + (iter*deltatT-tavefreq/2)/60/60/24); dv = datevec(startDate + (iter*deltatT-tavefreq/2)/60/60/24); newyear = dv(1); fname = sprintf(fpat, ilist(i)); disp([' ' fname ' ' str]); fid = fopen(fname, 'r', 'ieee-be'); offset = (is - 1)*nps*4; fseek(fid, offset, 'bof'); tmp = fread(fid, nps, 'real*4'); fclose(fid); if (newyear ~= oldyear) && (nm > 0) fnout = sprintf('ave-%d', oldyear); disp([' ==> Writing file "' fnout '"']); fido = fopen(fnout, 'a', 'ieee-be'); % fseek(fido, offset, 'bof'); m = m / nm; fwrite(fido, m, 'real*4'); fclose(fido); m = zeros(nps,1); nm = 0; end m = m + tmp; nm = nm + 1; oldyear = newyear; end end