How to number the peaks and troughs of signal ?

Illustration
Damian - 2020-12-30T10:20:38+00:00
Question: How to number the peaks and troughs of signal ?

Here is my signal where i need to number the peaks and troughs in numbers as 1,2,3,4...  

Expert Answer

Profile picture of Neeta Dsouza Neeta Dsouza answered . 2025-11-20

Try findpeaks() in the Signal Processing Toolbox. Invert the signal to find valleys.
 
 
numPoints = 50;
x = sort(rand(1, numPoints));
y = rand(1, numPoints);
plot(x, y, 'k-', 'LineWidth', 2);
grid on;
[peakValues, indexesOfPeaks] = findpeaks(y);
hold on;
peakx = x(indexesOfPeaks);
peaky = y(indexesOfPeaks);
plot(peakx, peaky, 'r*', 'LineWidth', 2, 'MarkerSize', 10);
% Find valleys on inverted signal
[valleyValues, indexesOfValleys] = findpeaks(-y);
valleyx = x(indexesOfValleys);
valleyy = y(indexesOfValleys);
hold on;
plot(valleyx, valleyy, 'b*', 'LineWidth', 2, 'MarkerSize', 10);

number the peaks

Be careful with the first and last point of your data since it doesn't find those. You should look at the adjacent index (2 or end-1) if you want to classify them as either a peak or valley.


Not satisfied with the answer ?? ASK NOW

Get a Free Consultation or a Sample Assignment Review!