How do I find the (x,y) coordinates of the peaks and valleys of a graph?

Illustration
Paxton - 2021-01-06T09:43:38+00:00
Question: How do I find the (x,y) coordinates of the peaks and valleys of a graph?

I am new to Matlab and I am not sure how to find the coordinates of the peaks or valleys of my graph. After looking online, I tried using findpeaks() which did give me the y-values of the local maxima of my function ((e^(−at))*cos(2πft), where t is time and a and f are constants). However, I have not been able to find the corresponding x-values (and findpeaks() omits a local max at the y-intercept). I am also not at all sure how to find the coordinates for the valleys (minima or "troughs").

Expert Answer

Profile picture of John Michell John Michell answered . 2025-11-20

The x values are the second return argument of findpeaks(). It's the index number. Your formula does not have an x by name so you have to go with the index number. If you have a second  array for t, then to get the t values you'd do
 
 
[peakValues, indexes] = findpeaks(y);
tValues = t(indexes);
To get valleys, you invert the signal, so that now what used to be valleys are now peaks, and use findpeaks() again
 
 
invertedY = max(y) - y;
[peakValues, indexes] = findpeaks(invertedY);
tValues = t(indexes);


Not satisfied with the answer ?? ASK NOW

Get a Free Consultation or a Sample Assignment Review!