Peaks over threshold counting events
7 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Isma_gp
le 25 Sep 2017
Modifié(e) : Andrei Bobrov
le 25 Sep 2017
Hi, I have a dataset with values with a time step of 3h. I need to find the values over a threshold i.e 7. When the value goes over 7 for some time and then down the threshold again counts as 1 event. I would like to count the number of events over that threshold for the whole data set. Attached the data: first column with the values, second column with the time.
Thanks
0 commentaires
Réponse acceptée
Arturo Moncada-Torres
le 25 Sep 2017
Based on your requirements, I would do the following:
data = Hs_hr(:,1);
thr = 7;
% Set data smaller than threshold to 0.
data(data<thr) = 0;
% Find peaks.
[pks,locs] = findpeaks(data);
fprintf('Number of peaks found: %d', length(pks));
% Plot.
figure();
hold('on');
plot(data);
plot(locs,pks,'ro');
hold('off');
If you further wish to tune the peak detection, I recommend you read the documentation of the findpeaks function .
0 commentaires
Plus de réponses (2)
Guillaume
le 25 Sep 2017
If I understood correctly,
overthreshold = yourvalues > yourthreshold;
overstarts = strfind([0; overthreshold]; [0; 1]); %find starts of sequences above threshold
overends = strfind([overthreshold; 0], [1; 0]) + 1; %find ends of sequences
overlength = overends - overstarts;
eventcount = sum(overlength > yourminimumlength);
0 commentaires
Andrei Bobrov
le 25 Sep 2017
Modifié(e) : Andrei Bobrov
le 25 Sep 2017
nnz(diff([0;Hs_hr(:,1)>7]));
or
nnz(filter([1,-1],1,(Hs_hr(:,1)>7)*2-1) == 2)
0 commentaires
Voir également
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!