How to number the peaks and troughs of signal ?

37 vues (au cours des 30 derniers jours)
Suvvi Kuppur Narayana Swamy
Here is my signal where i need to number the peaks and troughs in numbers as 1,2,3,4...

Réponse acceptée

Image Analyst
Image Analyst le 3 Juil 2020
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);
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.
  3 commentaires
Image Analyst
Image Analyst le 3 Juil 2020
Do you know about the text() function?
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);
% Plot peak labels
for k = 1 : length(peakx)
textLabel = sprintf(' %d', k);
text(peakx(k), peaky(k), textLabel, 'HorizontalAlignment', 'left', 'VerticalAlignment', 'bottom', 'Color', 'r', 'FontWeight', 'bold');
end
% Plot valley labels
for k = 1 : length(valleyx)
textLabel = sprintf(' %d', k);
text(valleyx(k), valleyy(k), textLabel, 'HorizontalAlignment', 'left', 'VerticalAlignment', 'top', 'Color', 'b', 'FontWeight', 'bold');
end
Suvvi Kuppur Narayana Swamy
No i dint know about the text function .I will look into it now .Thank you for this it works !!

Connectez-vous pour commenter.

Plus de réponses (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by