![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/182583/image.png)
Finding local minimums/maximums for a set of data
134 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Si14
el 21 de Jul. de 2012
Comentada: Umesh Gautam
el 11 de Mayo de 2023
Hi, I have a set of data which oscillates between minimums and maximum values. The min and max values change slightly over time. I want to see the trend of changing of min and max values over time. In order to do that, it seems that I need to extract the local min and local maximums.
Is there any function to extract the local minimums and maximums of the following graph?
Thanks.
![](https://www.mathworks.com/matlabcentral/images/broken_image.png)
4 comentarios
Steev Mathew
el 4 de Mzo. de 2021
Thanks! This helped me a lot. I was looking for a way to filter out noise from my data.
Anupama V
el 6 de Nov. de 2022
How to find the valley of a ppg signal?(secondary peak of a signal)
Respuesta aceptada
Star Strider
el 22 de Jul. de 2012
Editada: Star Strider
el 22 de Jul. de 2012
Another option is ‘findpeaks’ in the Signal Processing Toolbox. It will give you the maximum (and indirectly the minimum) values and their index locations. If ‘Data’ is the vector that produced the plot, to find the maxima and minima:
[Maxima,MaxIdx] = findpeaks(Data);
DataInv = 1.01*max(Data) - Data;
[Minima,MinIdx] = findpeaks(DataInv);
The true minima will then be:
Minima = Data(MinIdx);
The index values also allow you to determine the times the maxima and minima occurred.
9 comentarios
Christos-Nikolaos Zacharopoulos
el 27 de Feb. de 2018
Hi, I know that this is an old question, but why is the signal inverted using : DataInv = 1.01*max(Data) - Data; Cheers,
Star Strider
el 27 de Feb. de 2018
For some reason, it was important that the inverted waveform be greater than zero. (That was 5½ years ago, so I don’t remember the details.)
That’s likely not necessary for every signal. If you want the minima, just negate the original signal and use the indices findpeaks returns in the second output to get the values of the original signal.
I you have R2017b, the islocalmin function is also an option to get the minima without inverting the signal.
Más respuestas (5)
Steven Lord
el 4 de Mzo. de 2021
For more recent releases take a look at the islocalmin, islocalmax, and (perhaps) detrend functions.
0 comentarios
Image Analyst
el 22 de Jul. de 2012
Editada: Image Analyst
el 22 de Jul. de 2012
If you have the Image Processing Toolbox, you can use imregionmax() and imregionalmin(). Do you have that toolbox? If you do that would be the simplest because it's just simply one line of code to find either the maxs or the mins.
You can also do it by seeing where the morphological max or min (performed by imdilate() and imerode() respectively) equals the original array. But again, that requires the Image Processing Toolbox.
0 comentarios
Randy82
el 13 de Ag. de 2014
I have one question: Why do i have to multiply max(Data) with a factor 1.01?
1 comentario
Prithisha K
el 8 de Sept. de 2021
Set the prominence window value to 25. Then increase the min.prominence value untill there are exactly 9 minima found.
0 comentarios
Ver también
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!