selecting and extracting contiguous points as one event
2 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Stephen
am 7 Jan. 2019
Kommentiert: Stephen
am 8 Jan. 2019
I'm sure there is probably a drop-dead simple way to do this, but my brain is fried at the moment and I can't think of one. I'm trying to identify and count numbers of events that exceed a certain value in a time series. For example, a plot of the attached file yields:
I'd like to be able to count the number of events that exceed the red line (y=0.13). Sometimes there is 1 point > 0.13 (e.g. the first event above at x=40) and that is easy to count as a single signal. But sometimes there are 2 or more contiguous points > 0.13 (e.g. the second event above, at x=56, 57), yet should be counted as just one "event", not as 2 events.
How can this be done? I've attached a file with the above signal.
1 Kommentar
Akzeptierte Antwort
Weitere Antworten (2)
nanren888
am 7 Jan. 2019
tt = linspace(0,12,1001);
s= sin(tt);
th = 0.4;
nnz(diff(s-th));
dd = [0,diff((s-th)>0)>0.5];
plot(tt,s,tt,dd);
grid('on');
nnz(dd)
ans =
2
Image Analyst
am 8 Jan. 2019
If you have the Image Processing Toolbox, the simplest way is to just use the function that was made to do exactly that: bwlabel
[~, numRegions] = bwlabel(signal > 0.13);
Can't get any easier than that.
Siehe auch
Kategorien
Mehr zu Time Series Events finden Sie in Help Center und File Exchange
Produkte
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!