Plot extreme values on a time series
10 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Isma_gp
el 23 de Sept. de 2016
Comentada: Fatemah Ebrahim
el 1 de Jul. de 2019
Hi, I have the attached plots. I would like to mark the maximum and minimum value with a marker and show the values on a legend.
Thanks
0 comentarios
Respuesta aceptada
Star Strider
el 23 de Sept. de 2016
Use the max and min functions with two outputs to get the first instance of the maximum and minimum. Then use the second (index) output to find the value of time where it occurred:
[ymax,maxidx] = max(y);
[ymin,minidx] = min(y);
figure(1)
plot(time, y)
hold on
plot(time(maxidx), ymax, '^r')
plot(time(minidx), ymin, 'vr')
hold off
grid
If you have more than one values for the maximum or minimum, use the find function:
maxidx = find(y == max(y));
and the plot calls then change to:
plot(time(maxidx), y(maxidx), '^r')
and the same for the minima.
NOTE — This is UNTESTED CODE but should work.
1 comentario
Fatemah Ebrahim
el 1 de Jul. de 2019
How do you show these values (the corresponding time) on the legend?
Más respuestas (1)
Peppe
el 30 de Sept. de 2017
Editada: Peppe
el 30 de Sept. de 2017
Lets say you have a timeserie output where in one column you have Time and in the other you have Data:1 then for finding the max you simply can do
maxPoint = max(x)
It looks through the Data column. Now check for the time idex that is the same as for Data column:
timeIndex = find(x.data == maxPoint);
Now check the time:
x.Time(timeIdex);
Then you plot them as previous comment.
0 comentarios
Ver también
Categorías
Más información sobre Legend en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!