function out_array = avg_ecodata(input_array,p) % Calculate averages from the ECO data % Usage: % [outarray] = avg_ecodata(inputarray, 'ecobb') % Inputs: inputarray : data input array containing serial date, % ref light, ref, thermistor, siam timestamp, oasis timestamp % p : Structure containing properties, a result of the % getprops.m call. % Outputs: outarray : data output array containing serial date, averages, % count, siam timestamp, thermistor averages, reference light % averages % Where ecotype maybe one of the following: % ecobb : WetLabs ECO scattering meter % ecofl : WetLabs ECO fluorometer % rpm MBARI 2004 [row col]=size(input_array); sdn=input_array(:,5); otime=input_array(:,6); ecodata=input_array(:,3); ecoref=input_array(:,2); ecotemp=input_array(:,4); date_time=input_array(:,1); test_sdn=sdn(1,:); count=0;sums=0;i=1;avgs=0;tsums=0;tavgs=0;rsums=0;ravg=0; disp(['Averaging data...']); %rows=35; %debug for J=1:row if test_sdn==sdn(J,:) count=count+1; sums=sums+ecodata(J,:); tsums=tsums+ecotemp(J,:); rsums=rsums+ecoref(J,:); else % new record so avg the last values and write to an array avgs=sums/count; tavgs=tsums/count; ravgs=rsums/count; out_array(i,1)=date_time(J,:); out_array(i,2)=avgs; %Backscatter averages out_array(i,3)=count; out_array(i,4)=test_sdn; %Matlab timestamp out_array(i,5)=tavgs; %Thermistor averages out_array(i,6)=otime(J,:); %Oasis timestamp out_array(i,7)=ravgs; %Reference averages % reset new sdn, counters, and collect new sum test_sdn=sdn(J,:); i=i+1; count=1;sums=0;tsums=0;rsums=0; sums=sums+ecodata(J,:); tsums=tsums+ecotemp(J,:); rsums=rsums+ecoref(J,:); end %if test_sdn %disp(['J=',num2str(J)]); debug end %for J=1:row % write output to a file for debugging date_time=out_array(:,1); avgs=out_array(:,2); count=out_array(:,3); sdn2=out_array(:,4); tavgs=out_array(:,5); ravgs=out_array(:,7); fid=fopen([p.pdir,'/',p.ecotype, '_avgs.csv'],'w'); fprintf(fid,'%s,%s,%s,%s,%s,%s\n','%date','avgs','count','siam_date','tavgs','ravgs'); [row col]=size(out_array); for J=1: row fprintf(fid,'%f,%f,%i,%f,%f,%f\n',date_time(J,:),avgs(J,:),count(J,:),sdn2(J,:),tavgs(J,:),ravgs(J,:)); end fclose(fid); disp(['Finished ',num2str(row), ' averages.']); % Write to log file fid=fopen([p.ldir, '/',p.log],'at+'); fprintf(fid,'%s\n',[' 3. AVG_ECODATA: ' num2str(row) ' averages produced for ' ,p.ecotype]); fclose(fid);