Is there a way to detect a drop in values in an array?
19 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Leo Müller
el 9 de Nov. de 2015
Comentada: Image Analyst
el 9 de Nov. de 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.
0 comentarios
Respuesta aceptada
Image Analyst
el 9 de Nov. de 2015
Editada: Image Analyst
el 9 de Nov. de 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 comentarios
Image Analyst
el 9 de Nov. de 2015
Actually I forgot to invert the amounts in findpeaks. I corrected it, and the correct line is:
[invertedPeakValues, locations] = findpeaks(-amount);
Más respuestas (0)
Ver también
Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!