function EVENT = IDEVENT(DATA,NVEC,UMB,DUR) % IDENTIFICA PICOS SOBRE EL UMBRAL % DATA = serie de datos % NVEC = matriz de fechas en formato vectorial [año,mes,día] o % [año,mes,día,hora,minuto,segundo]; % UMB = umbral % DUR = tiempo mínimo entre eventos, en días. N = datenum(NVEC); EVENT = []; % Vector de eventos ID1 = 0; % Indice de eventos for I = 1:numel(DATA) % Para cada dato ID = find(N>=N(I)-(DUR-1)/2 & N<=N(I)+(DUR-1)/2); AUX = DATA(ID); % Datos incluidos en la ventana que va de t a t+DUR [MAX,IDMAX] = nanmax(AUX); % Máximo de los datos incluidos en la ventana if N(ID(IDMAX))==N(I) && ~isnan(MAX) % Si el máximo existe y está en el centro de la ventana... ID1 = ID1+1; % ... entonces tengo un evento más ... EVENT(ID1,:) = [N(I) MAX]; % ... y guardo los datos del nuevo evento. end end EVENT = EVENT(EVENT(:,2)>=UMB,:); % Filtra los máximos menores al umbral.