Finding when signal goes below threshold
3 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Systematically Neural
am 19 Feb. 2021
Kommentiert: Systematically Neural
am 22 Feb. 2021
Hi,
I am trying to find when my data goes below a threshold, but not everytime it goes below threshold. Given a certain event when it goes below a threhsold (both in the forward and reverse direction). I have a logical matrix of 1's and 0's that signal when my data is above a threshold (1) and not (0)( attached low_thresh). I also have a matrix of of index locations where events occur (baseline_waves). For each location event, I want to find where the next place the data goes below the threshold (in both the forward and reverse direction). Specifically where these locations are and the distance between the occurence in the reverse and forward direction. Every location will be above the threshold, just as a side note. I have tried a few ways, but cannot seem to come up with a good way to do this.
Any help would be appreciated.
0 Kommentare
Akzeptierte Antwort
Image Analyst
am 19 Feb. 2021
Can't you just mask it, like
indexes = above_threshold & baseline_waves;
then examine that logical with find() or strfind()?
If not, post a picture of a plot of the data with threshold indicated and the "events" located, and the indexes you want to find in the forward and reverse directions (do you mean "first" and "last"? If not explain forward and reverse.)
3 Kommentare
Image Analyst
am 21 Feb. 2021
% Find indexes above highThreshold
aboveHighIndexes = signal > highThreshold;
firstHigh = find(aboveHighIndexes, 1, 'first');
% "find when that signal for this event "first" went above the lower threshold"
% Make copy with values below the first index set to -inf
signalCopy = signal;
signalCopy(1:firstHigh - 1) = -inf;
% Now find where the signal is first above the lower threshold.
firstLow = find(signalCopy > lowThreshold, 1, 'first');
% Now find where the signal is first dives below the lower threshold, but after the first low index.
signalCopy(1 : firstLow) = inf;
nextLow = find(signalCopy <= lowThreshold, 1, 'first');
Attach actual data and expected results if you need more help.
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Matrix Indexing finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!