function [smooth] = tsg_average(hTsgGUI, PARA, iTsg) % Perform the average of a time series at the position of a WS sample % % The average is made over a period equal to 'tsg.cst.TSG_DT_SMOOTH' % Data exceeding the average over that period by 'tsg.cst.TSG_STDMAX' % are not taken into account. % % Input % hTsgGUI ............ Handle to the main user interface % % No computation : NaN % % Get the tsg structure from the application % ------------------------------------------ tsg = getappdata( hTsgGUI, 'tsg_data'); % Memory allocation - nval only used for debug % -------------------------------------------- % smooth = zeros( size(tsg.(PARA)) ); % nval = zeros( size(tsg.(PARA)) ); % Loop over the tsg.SSPS time series % ----------------------------------- %h = waitbar(0,'Please wait. Compute a smooth time series ....'); %iEnd = length(tsg.(PARA)); %for i = 1:iEnd % Display a wait bar % ------------------ % waitbar(i/iEnd); % Select the param data over 'tsg.cst.TSG_DT_SMOOTH' time interval % ind1 : indices of tsg.SSPS in the 'tsg.cst.TSG_DT_SMOOTH' time interval % ind2 : indices of 'good' tsg.SSPS in the 'tsg.cst.TSG_DT_SMOOTH' time % interval % -------------------------------------------------- ind1 = find( tsg.DAYD >= tsg.DAYD(iTsg) - tsg.cst.TSG_DT_SMOOTH/2 & ... tsg.DAYD <= tsg.DAYD(iTsg) + tsg.cst.TSG_DT_SMOOTH/2 ); ind2 = ind1; if ~isempty(ind2) currentStd = Inf; previousStd = 0; % Compare Standard Deviation to the MAX acceptable STD % ---------------------------------------------------- while currentStd > tsg.([PARA '_STDMAX']) && currentStd ~= previousStd previousStd = currentStd; % Standard deviation and average over timeInterval % ------------------------------------------------ currentStd = nanstd( tsg.(PARA)(ind2) ); meanParam = nanmean( tsg.(PARA)(ind2) ); % Indices of 'good' values of Param % --------------------------------- ind2 = ind1( tsg.(PARA)(ind1) >= meanParam - currentStd & ... tsg.(PARA)(ind1) <= meanParam + currentStd ); end smooth = nanmean( tsg.(PARA)(ind2) ); else smooth = NaN; end % nval only used for debug % ------------------------ % nval( i ) = length( ind2 ); %end %close(h) % Transfer the smooth timeseries to the TSG structure % nval only used for debug % --------------------------------------------------- %tsg.ssps_smooth = smooth; %tsg.ssps_smooth_nval = nval; % Update the tsg structure in the application % -------------------------------------------- %setappdata( hTsgGUI, 'tsg_data', tsg);