Is there a way to detect a drop in values in an array?

9 Ansichten (letzte 30 Tage)
Leo Müller
Leo Müller am 9 Nov. 2015
Kommentiert: Image Analyst am 9 Nov. 2015
Hello, I would like to know if there is a way to detect a sudden drop in values in an array. Matlab should see when a gap starts and tell me in which class it happens. How do I get Matlab to recognize the large gap which starts in class 16 (see picture).
Here is the reason: My program should be able to recognize two piles of points. Therefore I have computed all distances from each point to an fixed vector (in each slice/plane). Afterwords I have classed them by distance. The gap in the classes means, that there is also a big gap between the points. Thus a new pile of points begins. Thank you.

Akzeptierte Antwort

Image Analyst
Image Analyst am 9 Nov. 2015
Bearbeitet: Image Analyst am 9 Nov. 2015
You can threshold to find all elements less than a certain number:
lowAmounts = amount < 10; % Logical vector - use find() if you want actual indexes.
Or you can use findpeaks() in the signal Processing Toolbox to find valleys in your data
[peakValues, locations] = findpeaks(-amount);
Or you can use the diff() function to find big changes from one element to the next
differences = diff(amount);
bigDrops = differences < -15; % or whatever value you want.
They're slightly different, so it just depends on what you want exactly.
  2 Kommentare
Leo Müller
Leo Müller am 9 Nov. 2015
Thank you, I will try it out!
Image Analyst
Image Analyst am 9 Nov. 2015
Actually I forgot to invert the amounts in findpeaks. I corrected it, and the correct line is:
[invertedPeakValues, locations] = findpeaks(-amount);

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by